GET https://kbin.spritesserver.nl/u/@blasterx@lemmy.sdf.org/top

Components

21 Twig Components
45 Render Count
43 ms Render Time
12.0 MiB Memory Usage

Components

Name Metadata Render Count Render Time
settings_row_switch
"App\Twig\Components\SettingsRowSwitchComponent"
components/_settings_row_switch.html.twig
15 2.51ms
user_settings_row_switch
"App\Twig\Components\UserSettingsRowSwitchComponent"
components/_user_settings_row_switch.html.twig
4 0.72ms
date
"App\Twig\Components\DateComponent"
components/date.html.twig
3 0.94ms
user_inline
"App\Twig\Components\UserInlineComponent"
components/user_inline.html.twig
2 2.53ms
date_edited
"App\Twig\Components\DateEditedComponent"
components/date_edited.html.twig
2 0.42ms
vote
"App\Twig\Components\VoteComponent"
components/vote.html.twig
2 0.97ms
boost
"App\Twig\Components\BoostComponent"
components/boost.html.twig
2 2.32ms
settings_row_enum
"App\Twig\Components\SettingsRowEnumComponent"
components/_settings_row_enum.html.twig
2 0.37ms
user_box
"App\Twig\Components\UserBoxComponent"
components/user_box.html.twig
1 1.41ms
user_actions
"App\Twig\Components\UserActionsComponent"
components/user_actions.html.twig
1 0.84ms
entry
"App\Twig\Components\EntryComponent"
components/_cached.html.twig
1 13.93ms
magazine_inline
"App\Twig\Components\MagazineInlineComponent"
components/magazine_inline.html.twig
1 0.20ms
entry_comment
"App\Twig\Components\EntryCommentComponent"
components/entry_comment.html.twig
1 14.00ms
user_avatar
"App\Twig\Components\UserAvatarComponent"
components/user_avatar.html.twig
1 0.26ms
related_magazines
"App\Twig\Components\RelatedMagazinesComponent"
components/_cached.html.twig
1 2.13ms
active_users
"App\Twig\Components\ActiveUsersComponent"
components/_cached.html.twig
1 0.23ms
related_categories
"App\Twig\Components\RelatedCategoriesComponent"
components/_cached.html.twig
1 1.14ms
related_posts
"App\Twig\Components\RelatedPostsComponent"
components/_cached.html.twig
1 1.34ms
related_entries
"App\Twig\Components\RelatedEntriesComponent"
components/_cached.html.twig
1 1.30ms
support_us_block
"App\Twig\Components\SupportUsBlock"
components/_cached.html.twig
1 0.20ms
featured_magazines
"App\Twig\Components\FeaturedMagazinesComponent"
components/_cached.html.twig
1 3.72ms

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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
        date: 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
        date: 2024-01-09 12:37:33.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1699258760 {#3188
        date: 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
        date: 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
        date: 2023-12-25 04:10:26.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1703473826 {#2840
        date: 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
      date: 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
            date: 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
            date: 2024-03-08 22:55:35.0 +01:00
          }
          +apDeletedAt: null
          +apTimeoutAt: null
          +visibility: "visible             "
          +createdAt: DateTimeImmutable @1709934934 {#275
            date: 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
          date: 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
          date: 2024-03-08 22:55:43.0 +01:00
        }
        +createdAt: DateTimeImmutable @1704036973 {#1440
          date: 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
      date: 2024-07-06 20:55:46.0 +02:00
    }
    +createdAt: DateTimeImmutable @1704031666 {#1555
      date: 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
        date: 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
        date: 2024-01-09 12:37:33.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1699258760 {#3188
        date: 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
        date: 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
        date: 2023-12-25 04:10:26.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1703473826 {#2840
        date: 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
      date: 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
            date: 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
            date: 2024-03-08 22:55:35.0 +01:00
          }
          +apDeletedAt: null
          +apTimeoutAt: null
          +visibility: "visible             "
          +createdAt: DateTimeImmutable @1709934934 {#275
            date: 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
          date: 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
          date: 2024-03-08 22:55:43.0 +01:00
        }
        +createdAt: DateTimeImmutable @1704036973 {#1440
          date: 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
      date: 2024-07-06 20:55:46.0 +02:00
    }
    +createdAt: DateTimeImmutable @1704031666 {#1555
      date: 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
      date: 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
      date: 2024-01-09 12:37:33.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1699258760 {#3188
      date: 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
      date: 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
      date: 2024-01-09 12:37:33.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1699258760 {#3188
      date: 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
    date: 2023-12-31 15:07:46.0 +01:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#3269
  +date: DateTimeImmutable @1704031666 {#1555
    date: 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
    date: 2023-12-31 15:07:46.0 +01:00
  }
  "editedAt" => DateTimeImmutable @1720292146 {#1709
    date: 2024-07-06 20:55:46.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#3333
  +createdAt: DateTimeImmutable @1704031666 {#1555
    date: 2023-12-31 15:07:46.0 +01:00
  }
  +editedAt: DateTimeImmutable @1720292146 {#1709
    date: 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
      date: 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
      date: 2023-12-25 04:10:26.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1703473826 {#2840
      date: 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
      date: 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
      date: 2023-12-25 04:10:26.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1703473826 {#2840
      date: 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
        date: 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
        date: 2024-01-09 12:37:33.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1699258760 {#3188
        date: 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
        date: 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
        date: 2023-12-25 04:10:26.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1703473826 {#2840
        date: 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
      date: 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
            date: 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
            date: 2024-03-08 22:55:35.0 +01:00
          }
          +apDeletedAt: null
          +apTimeoutAt: null
          +visibility: "visible             "
          +createdAt: DateTimeImmutable @1709934934 {#275
            date: 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
          date: 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
          date: 2024-03-08 22:55:43.0 +01:00
        }
        +createdAt: DateTimeImmutable @1704036973 {#1440
          date: 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
      date: 2024-07-06 20:55:46.0 +02:00
    }
    +createdAt: DateTimeImmutable @1704031666 {#1555
      date: 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
        date: 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
        date: 2024-01-09 12:37:33.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1699258760 {#3188
        date: 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
        date: 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
        date: 2023-12-25 04:10:26.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1703473826 {#2840
        date: 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
      date: 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
            date: 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
            date: 2024-03-08 22:55:35.0 +01:00
          }
          +apDeletedAt: null
          +apTimeoutAt: null
          +visibility: "visible             "
          +createdAt: DateTimeImmutable @1709934934 {#275
            date: 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
          date: 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
          date: 2024-03-08 22:55:43.0 +01:00
        }
        +createdAt: DateTimeImmutable @1704036973 {#1440
          date: 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
      date: 2024-07-06 20:55:46.0 +02:00
    }
    +createdAt: DateTimeImmutable @1704031666 {#1555
      date: 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
        date: 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
        date: 2024-01-09 12:37:33.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1699258760 {#3188
        date: 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
        date: 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
        date: 2023-12-25 04:10:26.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1703473826 {#2840
        date: 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
      date: 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
            date: 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
            date: 2024-03-08 22:55:35.0 +01:00
          }
          +apDeletedAt: null
          +apTimeoutAt: null
          +visibility: "visible             "
          +createdAt: DateTimeImmutable @1709934934 {#275
            date: 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
          date: 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
          date: 2024-03-08 22:55:43.0 +01:00
        }
        +createdAt: DateTimeImmutable @1704036973 {#1440
          date: 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
      date: 2024-07-06 20:55:46.0 +02:00
    }
    +createdAt: DateTimeImmutable @1704031666 {#1555
      date: 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
        date: 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
        date: 2024-01-09 12:37:33.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1699258760 {#3188
        date: 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
        date: 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
        date: 2023-12-25 04:10:26.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1703473826 {#2840
        date: 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
      date: 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
            date: 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
            date: 2024-03-08 22:55:35.0 +01:00
          }
          +apDeletedAt: null
          +apTimeoutAt: null
          +visibility: "visible             "
          +createdAt: DateTimeImmutable @1709934934 {#275
            date: 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
          date: 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
          date: 2024-03-08 22:55:43.0 +01:00
        }
        +createdAt: DateTimeImmutable @1704036973 {#1440
          date: 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
      date: 2024-07-06 20:55:46.0 +02:00
    }
    +createdAt: DateTimeImmutable @1704031666 {#1555
      date: 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
        date: 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
        date: 2024-03-08 22:55:35.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1709934934 {#275
        date: 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
          date: 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
          date: 2024-01-09 12:37:33.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1699258760 {#3188
          date: 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
          date: 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
          date: 2023-12-25 04:10:26.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1703473826 {#2840
          date: 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
        date: 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
        date: 2024-07-06 20:55:46.0 +02:00
      }
      +createdAt: DateTimeImmutable @1704031666 {#1555
        date: 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
      date: 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
      date: 2024-03-08 22:55:43.0 +01:00
    }
    +createdAt: DateTimeImmutable @1704036973 {#1440
      date: 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
        date: 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
        date: 2024-03-08 22:55:35.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1709934934 {#275
        date: 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
          date: 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
          date: 2024-01-09 12:37:33.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1699258760 {#3188
          date: 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
          date: 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
          date: 2023-12-25 04:10:26.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1703473826 {#2840
          date: 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
        date: 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
        date: 2024-07-06 20:55:46.0 +02:00
      }
      +createdAt: DateTimeImmutable @1704031666 {#1555
        date: 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
      date: 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
      date: 2024-03-08 22:55:43.0 +01:00
    }
    +createdAt: DateTimeImmutable @1704036973 {#1440
      date: 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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
    date: 2023-12-31 16:36:13.0 +01:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#3962
  +date: DateTimeImmutable @1704036973 {#1440
    date: 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
    date: 2023-12-31 16:36:13.0 +01:00
  }
  "editedAt" => DateTimeImmutable @1709934943 {#1429
    date: 2024-03-08 22:55:43.0 +01:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#4016
  +createdAt: DateTimeImmutable @1704036973 {#1440
    date: 2023-12-31 16:36:13.0 +01:00
  }
  +editedAt: DateTimeImmutable @1709934943 {#1429
    date: 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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
      date: 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
      date: 2024-03-08 22:55:35.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1709934934 {#275
      date: 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
        date: 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
        date: 2024-03-08 22:55:35.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1709934934 {#275
        date: 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
          date: 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
          date: 2024-01-09 12:37:33.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1699258760 {#3188
          date: 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
          date: 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
          date: 2023-12-25 04:10:26.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1703473826 {#2840
          date: 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
        date: 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
        date: 2024-07-06 20:55:46.0 +02:00
      }
      +createdAt: DateTimeImmutable @1704031666 {#1555
        date: 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
      date: 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
      date: 2024-03-08 22:55:43.0 +01:00
    }
    +createdAt: DateTimeImmutable @1704036973 {#1440
      date: 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
        date: 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
        date: 2024-03-08 22:55:35.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1709934934 {#275
        date: 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
          date: 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
          date: 2024-01-09 12:37:33.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1699258760 {#3188
          date: 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
          date: 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
          date: 2023-12-25 04:10:26.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1703473826 {#2840
          date: 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
        date: 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
        date: 2024-07-06 20:55:46.0 +02:00
      }
      +createdAt: DateTimeImmutable @1704031666 {#1555
        date: 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
      date: 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
      date: 2024-03-08 22:55:43.0 +01:00
    }
    +createdAt: DateTimeImmutable @1704036973 {#1440
      date: 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
        date: 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
        date: 2024-03-08 22:55:35.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1709934934 {#275
        date: 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
          date: 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
          date: 2024-01-09 12:37:33.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1699258760 {#3188
          date: 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
          date: 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
          date: 2023-12-25 04:10:26.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1703473826 {#2840
          date: 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
        date: 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
        date: 2024-07-06 20:55:46.0 +02:00
      }
      +createdAt: DateTimeImmutable @1704031666 {#1555
        date: 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
      date: 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
      date: 2024-03-08 22:55:43.0 +01:00
    }
    +createdAt: DateTimeImmutable @1704036973 {#1440
      date: 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
        date: 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
        date: 2024-03-08 22:55:35.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1709934934 {#275
        date: 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
          date: 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
          date: 2024-01-09 12:37:33.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1699258760 {#3188
          date: 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
          date: 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
          date: 2023-12-25 04:10:26.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1703473826 {#2840
          date: 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
        date: 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
        date: 2024-07-06 20:55:46.0 +02:00
      }
      +createdAt: DateTimeImmutable @1704031666 {#1555
        date: 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
      date: 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
      date: 2024-03-08 22:55:43.0 +01:00
    }
    +createdAt: DateTimeImmutable @1704036973 {#1440
      date: 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
    date: 2024-03-08 22:55:34.0 +01:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#5831
  +date: DateTimeImmutable @1709934934 {#275
    date: 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 …}
}