Components
21
Twig Components
45
Render Count
43
ms
Render Time
12.0
MiB
Memory Usage
Components
Render calls
user_box | App\Twig\Components\UserBoxComponent | 12.0 MiB | 1.41 ms | |
---|---|---|---|---|
Input props | [ "user" => App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } "stretchedLink" => false ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserBoxComponent {#1407 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +stretchedLink: false } |
user_actions | App\Twig\Components\UserActionsComponent | 12.0 MiB | 0.84 ms | |
---|---|---|---|---|
Input props | [ "user" => App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserActionsComponent {#2162 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } } |
entry | App\Twig\Components\EntryComponent | 12.0 MiB | 13.93 ms | |
---|---|---|---|---|
Input props | [ "entry" => Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 …2} +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } "dateAsUrl" => true ] |
|||
Attributes | [ "dateAsUrl" => true ] |
|||
Component | App\Twig\Components\EntryComponent {#2785 -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …} -newCommentMarkerCount: App\Kbin\NewCommentMarker\NewCommentMarkerCount {#2786 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -security: Symfony\Bundle\SecurityBundle\Security {#1101 …} +entry: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 …2} +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +isSingle: false +showShortSentence: true +showBody: false +showMagazineName: true +canSeeTrash: false +newComments: 0 } |
user_inline | App\Twig\Components\UserInlineComponent | 12.0 MiB | 2.33 ms | |
---|---|---|---|---|
Input props | [ "user" => Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } "showAvatar" => false ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserInlineComponent {#3141 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +showAvatar: false } |
date | App\Twig\Components\DateComponent | 12.0 MiB | 0.46 ms | |
---|---|---|---|---|
Input props | [ "date" => DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateComponent {#3269 +date: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } } |
date_edited | App\Twig\Components\DateEditedComponent | 12.0 MiB | 0.24 ms | |
---|---|---|---|---|
Input props | [ "createdAt" => DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } "editedAt" => DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateEditedComponent {#3333 +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } } |
magazine_inline | App\Twig\Components\MagazineInlineComponent | 12.0 MiB | 0.20 ms | |
---|---|---|---|---|
Input props | [ "magazine" => Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } "showAvatar" => false ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\MagazineInlineComponent {#3398 +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +showTitle: true +fullName: false +stretchedLink: false +showAvatar: false } |
vote | App\Twig\Components\VoteComponent | 12.0 MiB | 0.49 ms | |
---|---|---|---|---|
Input props | [ "subject" => Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 …2} +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\VoteComponent {#3464 +subject: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 …2} +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +formDest: "entry" +showDownvote: true -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} } |
boost | App\Twig\Components\BoostComponent | 12.0 MiB | 1.66 ms | |
---|---|---|---|---|
Input props | [ "subject" => Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 …2} +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\BoostComponent {#3529 +formDest: "entry" +subject: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 …2} +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} } |
entry_comment | App\Twig\Components\EntryCommentComponent | 12.0 MiB | 14.00 ms | |
---|---|---|---|---|
Input props | [ "comment" => App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612} ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } "showEntryTitle" => false "dateAsUrl" => true "showMagazineName" => false ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\EntryCommentComponent {#3845 +comment: App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612} ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } +showMagazineName: false +showEntryTitle: false +showNested: false +level: 1 +canSeeTrash: false +dateAsUrl: true -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …} } |
user_inline | App\Twig\Components\UserInlineComponent | 12.0 MiB | 0.20 ms | |
---|---|---|---|---|
Input props | [ "user" => App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } "showAvatar" => false ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserInlineComponent {#3904 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +showAvatar: false } |
date | App\Twig\Components\DateComponent | 12.0 MiB | 0.34 ms | |
---|---|---|---|---|
Input props | [ "date" => DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateComponent {#3962 +date: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } } |
date_edited | App\Twig\Components\DateEditedComponent | 12.0 MiB | 0.19 ms | |
---|---|---|---|---|
Input props | [ "createdAt" => DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } "editedAt" => DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateEditedComponent {#4016 +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } } |
user_avatar | App\Twig\Components\UserAvatarComponent | 12.0 MiB | 0.26 ms | |
---|---|---|---|---|
Input props | [ "user" => App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } "width" => 40 "height" => 40 "asLink" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserAvatarComponent {#4072 +width: 40 +height: 40 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +asLink: true } |
vote | App\Twig\Components\VoteComponent | 12.0 MiB | 0.48 ms | |
---|---|---|---|---|
Input props | [ "subject" => App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612} ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\VoteComponent {#4161 +subject: App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612} ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } +formDest: "entry_comment" +showDownvote: true -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} } |
boost | App\Twig\Components\BoostComponent | 12.0 MiB | 0.66 ms | |
---|---|---|---|---|
Input props | [ "subject" => App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612} ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\BoostComponent {#4218 +formDest: "entry_comment" +subject: App\Entity\EntryComment {#1612 +user: App\Entity\User {#261 +avatar: null +cover: null +email: "blasterx@lemmy.sdf.org" +username: "@blasterx@lemmy.sdf.org" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1709934935 {#269 : 2024-03-08 22:55:35.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#248 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#244 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#233 …} +entries: Doctrine\ORM\PersistentCollection {#191 …} +entryVotes: Doctrine\ORM\PersistentCollection {#163 …} +entryComments: Doctrine\ORM\PersistentCollection {#136 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#106 …} +posts: Doctrine\ORM\PersistentCollection {#79 …} +postVotes: Doctrine\ORM\PersistentCollection {#94 …} +postComments: Doctrine\ORM\PersistentCollection {#1793 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1847 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2478 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1871 …} +follows: Doctrine\ORM\PersistentCollection {#1605 …} +followers: Doctrine\ORM\PersistentCollection {#1770 …} +blocks: Doctrine\ORM\PersistentCollection {#1844 …} +blockers: Doctrine\ORM\PersistentCollection {#1827 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#2415 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#1794 …} +reports: Doctrine\ORM\PersistentCollection {#2421 …} +favourites: Doctrine\ORM\PersistentCollection {#1931 …} +violations: Doctrine\ORM\PersistentCollection {#2401 …} +notifications: Doctrine\ORM\PersistentCollection {#1885 …} +awards: Doctrine\ORM\PersistentCollection {#1951 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1886 …} +categories: Doctrine\ORM\PersistentCollection {#1924 …} -id: 88614 -password: "$2y$13$XriCUbqqTdLf77mqU08bS.uYqCfSICzQvxbf/I/1cLd7lwdnmHh7K" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1896 …} +apId: "blasterx@lemmy.sdf.org" +apProfileId: "https://lemmy.sdf.org/u/blasterx" +apPublicUrl: "https://lemmy.sdf.org/u/blasterx" +apFollowersUrl: null +apInboxUrl: "https://lemmy.sdf.org/inbox" +apDomain: "lemmy.sdf.org" +apPreferredUsername: "blasterx" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1709934935 {#272 : 2024-03-08 22:55:35.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } +entry: Proxies\__CG__\App\Entity\Entry {#1583 +user: Proxies\__CG__\App\Entity\User {#2469 +avatar: null +cover: null +email: "tofubl@discuss.tchncs.de" +username: "@tofubl@discuss.tchncs.de" +roles: [] +followersCount: 0 +homepage: "front" +about: null +lastActive: DateTime @1712594949 {#3189 : 2024-04-08 18:49:09.0 +02:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: false +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: true +notifyOnNewEntryCommentReply: true +notifyOnNewPost: false +notifyOnNewPostReply: true +notifyOnNewPostCommentReply: true +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#3194 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#3197 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#3199 …} +entries: Doctrine\ORM\PersistentCollection {#3201 …} +entryVotes: Doctrine\ORM\PersistentCollection {#3203 …} +entryComments: Doctrine\ORM\PersistentCollection {#3205 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#3207 …} +posts: Doctrine\ORM\PersistentCollection {#3209 …} +postVotes: Doctrine\ORM\PersistentCollection {#3211 …} +postComments: Doctrine\ORM\PersistentCollection {#3213 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#3215 …} +subscriptions: Doctrine\ORM\PersistentCollection {#3217 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#3219 …} +follows: Doctrine\ORM\PersistentCollection {#3221 …} +followers: Doctrine\ORM\PersistentCollection {#3223 …} +blocks: Doctrine\ORM\PersistentCollection {#3225 …} +blockers: Doctrine\ORM\PersistentCollection {#3227 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#3229 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#3231 …} +reports: Doctrine\ORM\PersistentCollection {#3233 …} +favourites: Doctrine\ORM\PersistentCollection {#3235 …} +violations: Doctrine\ORM\PersistentCollection {#3237 …} +notifications: Doctrine\ORM\PersistentCollection {#3239 …} +awards: Doctrine\ORM\PersistentCollection {#3241 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#3243 …} +categories: Doctrine\ORM\PersistentCollection {#3245 …} -id: 72209 -password: "$2y$13$5urW2K1afmv2i0kWIw8EyeZJ.47/OghgI9s6A/vfHazGb0ZPibFPC" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#3247 …} +apId: "tofubl@discuss.tchncs.de" +apProfileId: "https://discuss.tchncs.de/u/tofubl" +apPublicUrl: "https://discuss.tchncs.de/u/tofubl" +apFollowersUrl: null +apInboxUrl: "https://discuss.tchncs.de/inbox" +apDomain: "discuss.tchncs.de" +apPreferredUsername: "tofubl" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1704800253 {#3186 : 2024-01-09 12:37:33.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1699258760 {#3188 : 2023-11-06 09:19:20.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 +icon: Proxies\__CG__\App\Entity\Image {#2859 …} +name: "selfhosted@lemmy.world" +title: "selfhosted" +description: """ A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n \n Rules:\n \n - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n - No spam posting.\n - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n - No trolling.\n \n Resources:\n \n - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n \n > Any issues on the community? Report it using the report flag.\n \n > Questions? DM the mods! """ +rules: null +subscriptionsCount: 1 +entryCount: 222 +entryCommentCount: 3916 +postCount: 0 +postCommentCount: 0 +isAdult: false +customCss: null +lastActive: DateTime @1729582735 {#2838 : 2024-10-22 09:38:55.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2858 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2856 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2861 …} +entries: Doctrine\ORM\PersistentCollection {#2862 …} +posts: Doctrine\ORM\PersistentCollection {#2865 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2867 …} +bans: Doctrine\ORM\PersistentCollection {#2873 …} +reports: Doctrine\ORM\PersistentCollection {#2881 …} +badges: Doctrine\ORM\PersistentCollection {#2894 …} +logs: Doctrine\ORM\PersistentCollection {#2904 …} +awards: Doctrine\ORM\PersistentCollection {#2886 …} +categories: Doctrine\ORM\PersistentCollection {#2910 …} -id: 120 +apId: "selfhosted@lemmy.world" +apProfileId: "https://lemmy.world/c/selfhosted" +apPublicUrl: "https://lemmy.world/c/selfhosted" +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers" +apInboxUrl: "https://lemmy.world/inbox" +apDomain: "lemmy.world" +apPreferredUsername: "selfhosted" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1703473826 {#2839 : 2023-12-25 04:10:26.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1703473826 {#2840 : 2023-12-25 04:10:26.0 +01:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#1717 …} +slug: "Nextcloud-Performance-Improvements" +title: "Nextcloud Performance Improvements" +url: null +body: """ Nextcloud seems to have a bad reputation around here regarding performance. It never really bothered me, but when a comment on a [post here yesterday](https://discuss.tchncs.de/post/8512710) talked about huge speed gains to be had with Postgres, I got curious and spent a few hours researching and tweaking my setup.\n \n I thought I’d write up what I learned and maybe others can jump in with their insights to make this a good general overview.\n \n To note, my installation initially started out with [this docker compose stack](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml) from the official nextcloud docker images (as opposed to the AIO image or a source installation.) I run this behind an [NGINX reverse proxy](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).\n \n #### Sources of information\n \n - [Server tuning on Nextcloud Docs](https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html): Most of this are very basic things that are already taken care of in the docker image or in the proxy companion image I’m using. The one thing I haven’t tried and that comes up in other places, too, is using Imaginary for image preview generation.\n - [How to migrate Nextcloud 17 Database Backend from MySQL to postgreSQL](https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)\n - [Eking out some Nextcloud Performance](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) mainly talks about using a socket connection for redis, but also mentions logging to syslog (have not found a good source of information for this), using postgres, using imaginary for image previews\n \n ### Improvements\n \n #### Migrate DB to Postgres\n \n What I did first is migrate from maridb to postgres, roughly following the blog post I linked above. I didn’t do any benchmarking, but page loads felt a little faster after that (but a far cry from the “way way faster” claims I’d read.)\n \n Here's my process- add postgres container to compose file [like so](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml). I named mine “postgres”, added a “postgres” volume, and added it to depends_on for app and cron - run migration command from nextcloud app container like any other occ command. The migration process stopped with an error for a deactivated app so I completely removed it, dropped the postgres tables and started migration again and it went through. after migration, check `admin settings/system` to make sure Nextcloud is now using postgres. `./occ db:convert-type --password $POSTGRES_PASSWORD --all-apps pgsql $POSTGRES_USER postgres $POSTGRES_DB`- remove old “db” container and volume and all references to it from compose file and run `docker compose up -d --remove-orphans`\n \n #### Redis over Sockets\n \n I followed [above guide](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/) for connecting to Redis with sockets with details as stated below. This improved performance quite significantly. Very fast loads for files, calendar, etc. I haven’t yet changed the postgres connection over to sockets since the article spoke about minor improvements, but I might try this next.\n \n Hints- the redis configuration (host, port, password, …) need to be set in `config/config.php`, as well as `config/redis.config.php`- the cron container needs to receive the same `/etc/localtime` and `/etc/timezone` volumes the app container did, as well as the `volumes_from: tmp`\n \n #### EDIT Postgres over Sockets\n \n I’m now connecting to Postgres over sockets as well, which gave another pretty significant speed bump. When looking at developer tools in Firefox, the dashboard now finishes loading in half the time it did before the change; just over 6s. I followed the [same blog article I did for Redis](https://peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).\n \n Steps- in the compose file, for the db container: add volumes `/etc/localtime` and `/etc/timezone`; add `user: “70:33”`; add `command: postgres -c unix_socket_directories=‘/var/run/postgresql/,/tmp/docker/’`; add tmp container to `volumes_from` and `depends_on`- in nextcloud config.php, replace `‘dbhost’ => ‘postgres’,` with `‘dbhost’ => ‘/tmp/docker/’,`\n \n ### Outlook\n \n What have you done to improve your instance’s performance? Do you know good articles to share? I’m happy to edit this post to include any insights and make this a good source of information regarding Nextcloud performance. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 35 +favouriteCount: 131 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1712594949 {#1562 : 2024-04-08 18:49:09.0 +02:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#1739 …} +votes: Doctrine\ORM\PersistentCollection {#1740 …} +reports: Doctrine\ORM\PersistentCollection {#2464 …} +favourites: Doctrine\ORM\PersistentCollection {#1599 …} +notifications: Doctrine\ORM\PersistentCollection {#1617 …} +badges: Doctrine\ORM\PersistentCollection {#1686 …} +children: [ App\Entity\EntryComment {#1612} ] -id: 26234 -titleTs: "'improv':3 'nextcloud':1 'perform':2" -bodyTs: "'/etc/localtime':491,575 '/etc/timezone':493,577 '/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':191 '/jwilder/docker-letsencrypt-nginx-proxy-companion).':118 '/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':91 '/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':297 '/occ':369 '/post/8512710)':28 '/server/latest/admin_manual/installation/server_tuning.html):':129 '/tech/20220618-eking-out-some-nextcloud-performance/)':199,418 '/tech/20220618-eking-out-some-nextcloud-performance/).':563 '/tmp/docker':590,608 '/var/run/postgresql':589 '17':182 '33':581 '6s':550 '70':580 'ad':302,307 'add':287,573,578,582,591 'admin':359 'aio':102 'all-app':377 'alreadi':139 'also':210 'anoth':522 'app':313,321,338,379,496 'around':8 'articl':455,556,624 'backend':184 'bad':6 'basic':135 'behind':111 'benchmark':260 'blog':250,555 'bother':15 'bump':526 'c':585 'calendar':440 'care':141 'chang':446,547 'check':358 'claim':279 'come':165 'command':318,327,583 'comment':20 'companion':151 'complet':341 'compos':87,291,398,403,567 'config.php':602 'config/config.php':478 'config/redis.config.php':482 'configur':469 'connect':206,420,449,513 'contain':289,322,389,485,497,572,593 'convert':372 'convert-typ':371 'cri':273 'cron':315,484 'curious':41 'd':55,281,405 'dashboard':535 'databas':183 'db':234,370,385,388,571 'dbhost':604,607 'deactiv':337 'depend':310,598 'detail':426 'develop':530 'didn':256 'directori':588 'discuss.tchncs.de':27 'discuss.tchncs.de/post/8512710)':26 'doc':126 'docker':86,96,145,402 'docs.nextcloud.com':128 'docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html):':127 'done':613 'drop':344 'edit':506,631 'eke':192 'error':334 'etc':441 'far':272 'fast':436 'faster':267,278 'felt':264 'file':292,399,439,568 'finish':537 'firefox':533 'first':240 'follow':248,413,552 'found':217 'gain':33 'gave':521 'general':75 'generat':177 'github.com':90,117,296 'github.com/jwilder/docker-letsencrypt-nginx-proxy-companion).':116 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/apache/docker-compose.yml)':89 'github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml).':295 'good':74,219,623,642 'got':40 'guid':415 'half':540 'happi':629 'haven':160,443 'hint':466 'host':470 'hour':46 'huge':31 'imag':97,103,146,152,175,230 'imaginari':173,228 'improv':232,431,459,615 'includ':635 'inform':121,222,645 'initi':81 'insight':69,637 'instal':80,107 'instanc':617 'jump':65 'know':622 'learn':60 'like':293,323 'link':253 'littl':266 'load':263,437,538 'log':212 'look':528 'm':154,511,628 'main':200 'make':71,362,639 'maridb':244 'markus-blog.de':190 'markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/)':189 'mayb':62 'mention':211 'might':462 'migrat':180,233,242,317,329,350,357 'mine':300 'minor':458 'mysql':186 'name':299 'need':473,486 'never':13 'next':465 'nextcloud':1,95,125,181,195,320,364,601,647 'nginx':113 'note':78 'occ':326 'offici':94 'old':387 'one':157 'oppos':99 'orphan':408 'other':63 'outlook':609 'overview':76 'page':262 'password':374,376,472 'peekread.info':198,417,562 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/)':197,416 'peekread.info/tech/20220618-eking-out-some-nextcloud-performance/).':561 'perform':11,196,432,619,648 'pgsql':380 'place':169 'port':471 'post':23,251,633 'postgr':38,226,236,246,288,301,304,346,368,375,381,383,384,448,507,515,584,605 'postgresql':188 'pretti':523 'preview':176,231 'process':286,330 'proxi':115,150 'quit':433 'read':282 'realli':14 'receiv':488 'redi':208,409,422,468,560 'refer':394 'regard':10,646 'remov':342,386,407 'remove-orphan':406 'replac':603 'reput':7 'research':47 'revers':114 'rough':247 'run':109,316,401 'seem':2 'server':122 'set':476 'settings/system':360 'setup':51 'share':626 'signific':434,524 'sinc':453 'socket':205,411,424,452,509,517,587 'sourc':106,119,220,643 'speed':32,525 'spent':43 'spoke':456 'stack':88 'start':82,349 'state':428 'step':564 'stop':331 'sure':363 'syslog':214 'tabl':347 'taken':140 'talk':29,201 'thing':136,158 'thought':53 'time':542 'tmp':505,592 'tool':531 'tri':162,463 'tune':123 'tweak':49 'type':373 'unix':586 'use':155,172,203,225,227,367 'user':382,579 'volum':305,391,494,503,574,595 'way':276,277 'well':480,500,519 'went':354 'write':56 'yesterday':25 'yet':445" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1704118066 +visibility: "visible " +apId: "https://discuss.tchncs.de/post/8559818" +editedAt: DateTimeImmutable @1720292146 {#1709 : 2024-07-06 20:55:46.0 +02:00 } +createdAt: DateTimeImmutable @1704031666 {#1555 : 2023-12-31 15:07:46.0 +01:00 } +__isInitialized__: true …2 } +magazine: Proxies\__CG__\App\Entity\Magazine {#1587 …2} +image: null +parent: Proxies\__CG__\App\Entity\EntryComment {#1655 …} +root: Proxies\__CG__\App\Entity\EntryComment {#1652 …} +body: "it stands for Windows Subsystem for Linux. [Here](https://www.windowscentral.com/how-install-wsl2-windows-10) is a link on how to install it." +lang: "en" +isAdult: false +favouriteCount: 3 +score: 0 +lastActive: DateTime @1704036973 {#1430 : 2023-12-31 16:36:13.0 +01:00 } +ip: null +tags: null +mentions: [ "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" "@tofubl@discuss.tchncs.de" "@SecurityPro@lemmy.ml" ] +children: Doctrine\ORM\PersistentCollection {#1650 …} +nested: Doctrine\ORM\PersistentCollection {#1671 …} +votes: Doctrine\ORM\PersistentCollection {#1667 …} +reports: Doctrine\ORM\PersistentCollection {#1670 …} +favourites: Doctrine\ORM\PersistentCollection {#1560 …} +notifications: Doctrine\ORM\PersistentCollection {#1585 …} -id: 267518 -bodyTs: "'/how-install-wsl2-windows-10)':11 'instal':18 'link':14 'linux':7 'stand':2 'subsystem':5 'window':4 'www.windowscentral.com':10 'www.windowscentral.com/how-install-wsl2-windows-10)':9" +ranking: 0 +commentCount: 0 +upVotes: 0 +downVotes: 0 +visibility: "visible " +apId: "https://lemmy.sdf.org/comment/6817528" +editedAt: DateTimeImmutable @1709934943 {#1429 : 2024-03-08 22:55:43.0 +01:00 } +createdAt: DateTimeImmutable @1704036973 {#1440 : 2023-12-31 16:36:13.0 +01:00 } +"title": 267518 } -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} } |
settings_row_enum | App\Twig\Components\SettingsRowEnumComponent | 12.0 MiB | 0.22 ms | |
---|---|---|---|---|
Input props | [ "label" => "Sidebar position" "settingsKey" => "KBIN_GENERAL_SIDEBAR_POSITION" "values" => [ [ "name" => "Left" "value" => "LEFT" ] [ "name" => "Right" "value" => "RIGHT" ] ] "defaultValue" => "RIGHT" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowEnumComponent {#4599 +label: "Sidebar position" +help: "" +settingsKey: "KBIN_GENERAL_SIDEBAR_POSITION" +values: [ [ "name" => "Left" "value" => "LEFT" ] [ "name" => "Right" "value" => "RIGHT" ] ] +defaultValue: "RIGHT" +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.30 ms | |
---|---|---|---|---|
Input props | [ "label" => "Dynamic lists" "settingsKey" => "KBIN_GENERAL_DYNAMIC_LISTS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4671 +label: "Dynamic lists" +help: "" +settingsKey: "KBIN_GENERAL_DYNAMIC_LISTS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.18 ms | |
---|---|---|---|---|
Input props | [ "label" => "Rounded edges" "settingsKey" => "KBIN_GENERAL_ROUNDED_EDGES" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4734 +label: "Rounded edges" +help: "" +settingsKey: "KBIN_GENERAL_ROUNDED_EDGES" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.20 ms | |
---|---|---|---|---|
Input props | [ "label" => "Infinite scrolling" "help" => "Automatically load more content when you reach the bottom of the page." "settingsKey" => "KBIN_GENERAL_INFINITE_SCROLL" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4790 +label: "Infinite scrolling" +help: "Automatically load more content when you reach the bottom of the page." +settingsKey: "KBIN_GENERAL_INFINITE_SCROLL" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.18 ms | |
---|---|---|---|---|
Input props | [ "label" => "Sticky navbar" "help" => "The navbar will stick to the top of the page when you scroll down." "settingsKey" => "KBIN_GENERAL_FIXED_NAVBAR" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4849 +label: "Sticky navbar" +help: "The navbar will stick to the top of the page when you scroll down." +settingsKey: "KBIN_GENERAL_FIXED_NAVBAR" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.19 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show top bar" "settingsKey" => "KBIN_GENERAL_TOPBAR" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4905 +label: "Show top bar" +help: "" +settingsKey: "KBIN_GENERAL_TOPBAR" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.20 ms | |
---|---|---|---|---|
Input props | [ "label" => "Turbo mode (experimental)" "settingsKey" => "KBIN_GENERAL_TURBO" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4961 +label: "Turbo mode (experimental)" +help: "" +settingsKey: "KBIN_GENERAL_TURBO" +defaultValue: false +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.25 ms | |
---|---|---|---|---|
Input props | [ "label" => "Mark new comments" "settingsKey" => "KBIN_MARK_NEW_COMMENTS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#5019 +label: "Mark new comments" +help: "" +settingsKey: "KBIN_MARK_NEW_COMMENTS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show "Support Us" block" "settingsKey" => "KBIN_GENERAL_SUPPORT_US_BLOCK" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5082 +label: "Show "Support Us" block" +help: "" +settingsKey: "KBIN_GENERAL_SUPPORT_US_BLOCK" +defaultValue: true +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.16 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show subscribed users" "settingsKey" => "KBIN_SUB_CHANNEL_USERS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#5140 +label: "Show subscribed users" +help: "" +settingsKey: "KBIN_SUB_CHANNEL_USERS" +defaultValue: false +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.16 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show subscribed magazines" "settingsKey" => "KBIN_SUB_CHANNEL_MAGAZINES" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#5196 +label: "Show subscribed magazines" +help: "" +settingsKey: "KBIN_SUB_CHANNEL_MAGAZINES" +defaultValue: false +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.14 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show subscribed domains" "settingsKey" => "KBIN_SUB_CHANNEL_DOMAINS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#5252 +label: "Show subscribed domains" +help: "" +settingsKey: "KBIN_SUB_CHANNEL_DOMAINS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Auto media preview" "help" => "Automatically expand media previews." "settingsKey" => "KBIN_ENTRIES_SHOW_PREVIEW" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5308 +label: "Auto media preview" +help: "Automatically expand media previews." +settingsKey: "KBIN_ENTRIES_SHOW_PREVIEW" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Compact view" "settingsKey" => "KBIN_ENTRIES_COMPACT" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5364 +label: "Compact view" +help: "" +settingsKey: "KBIN_ENTRIES_COMPACT" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show users’ avatars" "settingsKey" => "KBIN_ENTRIES_SHOW_USERS_AVATARS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5420 +label: "Show users’ avatars" +help: "" +settingsKey: "KBIN_ENTRIES_SHOW_USERS_AVATARS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show magazines’ icons" "settingsKey" => "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5476 +label: "Show magazines’ icons" +help: "" +settingsKey: "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show thumbnails" "settingsKey" => "KBIN_ENTRIES_SHOW_THUMBNAILS" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5532 +label: "Show thumbnails" +help: "" +settingsKey: "KBIN_ENTRIES_SHOW_THUMBNAILS" +defaultValue: true +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Auto media preview" "help" => "Automatically expand media previews." "settingsKey" => "KBIN_POSTS_SHOW_PREVIEW" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5588 +label: "Auto media preview" +help: "Automatically expand media previews." +settingsKey: "KBIN_POSTS_SHOW_PREVIEW" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show users’ avatars" "settingsKey" => "KBIN_POSTS_SHOW_USERS_AVATARS" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5644 +label: "Show users’ avatars" +help: "" +settingsKey: "KBIN_POSTS_SHOW_USERS_AVATARS" +defaultValue: true +reloadRequired: true } |
settings_row_enum | App\Twig\Components\SettingsRowEnumComponent | 12.0 MiB | 0.15 ms | |
---|---|---|---|---|
Input props | [ "label" => "Comment reply position" "help" => "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top." "settingsKey" => "KBIN_COMMENTS_REPLY_POSITION" "values" => [ [ "name" => "top" "value" => "TOP" ] [ "name" => "bottom" "value" => "BOTTOM" ] ] "defaultValue" => "TOP" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowEnumComponent {#5700 +label: "Comment reply position" +help: "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top." +settingsKey: "KBIN_COMMENTS_REPLY_POSITION" +values: [ [ "name" => "top" "value" => "TOP" ] [ "name" => "bottom" "value" => "BOTTOM" ] ] +defaultValue: "TOP" +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.26 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show Comment Avatars" "help" => "Display/hide user avatars when viewing comments on a single thread or post." "settingsKey" => "KBIN_COMMENTS_SHOW_USER_AVATAR" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#5758 +label: "Show Comment Avatars" +help: "Display/hide user avatars when viewing comments on a single thread or post." +settingsKey: "KBIN_COMMENTS_SHOW_USER_AVATAR" +defaultValue: true +reloadRequired: true } |
date | App\Twig\Components\DateComponent | 12.0 MiB | 0.14 ms | |
---|---|---|---|---|
Input props | [ "date" => DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateComponent {#5831 +date: DateTimeImmutable @1709934934 {#275 : 2024-03-08 22:55:34.0 +01:00 } } |
related_magazines | App\Twig\Components\RelatedMagazinesComponent | 12.0 MiB | 2.13 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedMagazinesComponent {#5918 +limit: 4 +tag: null +magazine: null +type: "random" +title: "random_magazines" +refreshedRandom: false -repository: App\Repository\MagazineRepository {#2438 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} } |
active_users | App\Twig\Components\ActiveUsersComponent | 12.0 MiB | 0.23 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\ActiveUsersComponent {#5983 +magazine: null -userRepository: App\Repository\UserRepository {#603 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} } |
related_categories | App\Twig\Components\RelatedCategoriesComponent | 12.0 MiB | 1.14 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedCategoriesComponent {#6042 +limit: 4 +tag: null +magazine: null +type: "random" +title: "random_categories" +refreshedRandom: false -repository: App\Repository\CategoryRepository {#6043 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} } |
related_posts | App\Twig\Components\RelatedPostsComponent | 12.0 MiB | 1.34 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedPostsComponent {#6112 +limit: 4 +tag: null +magazine: null +type: "random" +post: null +title: "random_posts" +refreshedRandom: false -repository: App\Repository\PostRepository {#1466 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -mentionManager: App\Service\MentionManager {#1539 …} } |
related_entries | App\Twig\Components\RelatedEntriesComponent | 12.0 MiB | 1.30 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedEntriesComponent {#6181 +limit: 4 +tag: null +magazine: null +type: "random" +entry: null +title: "random_entries" +refreshedRandom: false -repository: App\Repository\EntryRepository {#1772 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -mentionManager: App\Service\MentionManager {#1539 …} } |
support_us_block | App\Twig\Components\SupportUsBlock | 12.0 MiB | 0.20 ms | |
---|---|---|---|---|
Input props | [] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SupportUsBlock {#6250 +subject: ? App\Entity\Contracts\VotableInterface +url: ? string -twig: Twig\Environment {#1252 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -partnerBlockRepository: App\Repository\PartnerBlockRepository {#6251 …} } |
featured_magazines | App\Twig\Components\FeaturedMagazinesComponent | 12.0 MiB | 3.72 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\FeaturedMagazinesComponent {#6343 +magazine: null -twig: Twig\Environment {#1252 …} -repository: App\Repository\MagazineRepository {#2438 …} } |