diff --git a/charts/gotosocial/Chart.yaml b/charts/gotosocial/Chart.yaml index f421092..e3d3d7a 100644 --- a/charts/gotosocial/Chart.yaml +++ b/charts/gotosocial/Chart.yaml @@ -1,14 +1,14 @@ apiVersion: v2 name: gotosocial -description: A Helm chart for Kubernetes +description: A Helm chart for Kubernetes to Deploy GoToSocial icon: https://docs.gotosocial.org/en/latest/assets/sloth.png home: https://github.com/superseriousbusiness/gotosocial type: application # Chart Version -version: "0.3.7" +version: "0.3.8" # gotosocial version -appVersion: "0.8.0" +appVersion: "0.8.1" maintainers: - name: 0hlov3 @@ -26,4 +26,4 @@ annotations: artifacthub.io/containsSecurityUpdates: "false" artifacthub.io/images: | - name: gotosocial - image: superseriousbusiness/gotosocial:0.8.0 \ No newline at end of file + image: superseriousbusiness/gotosocial:0.8.1 \ No newline at end of file diff --git a/charts/gotosocial/templates/secrets.yaml b/charts/gotosocial/templates/secrets.yaml index e4f1f50..8ef9e26 100644 --- a/charts/gotosocial/templates/secrets.yaml +++ b/charts/gotosocial/templates/secrets.yaml @@ -7,6 +7,21 @@ stringData: cert.crt: {{ .Values.externalPostgresql.ca_cert | quote }} {{- end }} config.yaml: | + # GoToSocial + # Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org + # + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU Affero General Public License as published by + # the Free Software Foundation, either version 3 of the License, or + # (at your option) any later version. + # + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU Affero General Public License for more details. + # + # You should have received a copy of the GNU Affero General Public License + # along with this program. If not, see . ########################### ##### GENERAL CONFIG ###### ########################### @@ -14,7 +29,7 @@ stringData: log-db-queries: {{ .Values.gotosocial.config.logDBQueries | default false }} application-name: {{ .Values.gotosocial.config.applicationName | default "gotosocial" | quote }} landing-page-user: {{ .Values.gotosocial.config.landingPageUser | default "" |quote}} - host: {{ .Values.gotosocial.config.host | default "localhost" |quote }} + host: {{ .Values.gotosocial.config.host |quote }} account-domain: {{ .Values.gotosocial.config.accountDomain | default "" |quote }} protocol: {{ .Values.gotosocial.config.protocol | default "https" |quote }} bind-address: {{ .Values.gotosocial.config.bindAddress | default "0.0.0.0" |quote }} @@ -48,49 +63,70 @@ stringData: db-password: {{ .Values.externalPostgresql.password | quote }} {{- else }} db-type: sqlite - db-address: {{ .Values.gotosocial.config.db.sqlite_address | default "/gotosocial/storage/sqlite.db" |quote}} + db-address: {{ .Values.gotosocial.config.db.sqliteAddress | default "/gotosocial/storage/sqlite.db" |quote}} db-sqlite-journal-mode: {{ .Values.gotosocial.config.db.sqliteJournalMode | default "WAL" |quote }} db-sqlite-synchronous: {{ .Values.gotosocial.config.db.sqliteSynchronous | default "NORMAL" |quote }} db-sqlite-cache-size: {{ .Values.gotosocial.config.db.sqliteCacheSize | default "8MiB" |quote }} db-sqlite-busy-timeout: {{ .Values.gotosocial.config.db.sqliteBusyTimeout | default "5m" |quote }} {{- end }} db-max-open-conns-multiplier: {{ .Values.gotosocial.config.db.maxOpenConnsMultiplier | default 8 }} + db-sqlite-synchronous: {{ .Values.gotosocial.config.db.sqliteSynchronous | default "NORMAL" | quote }} + db-sqlite-cache-size: {{ .Values.gotosocial.config.db.sqliteCacheSize | default "8MiB" | quote }} + db-sqlite-busy-timeout" {{ .Values.gotosocial.config.db.sqliteBusyTimeout | default "5m" | quote }} {{- if .Values.gotosocial.config.db.cache.enabled }} cache: + visibility-max-size: {{ .Values.gotosocial.config.db.cache.visibilityMaxSize | default 2000 }} + visibility-ttl: {{ .Values.gotosocial.config.db.cache.visibilityTTL | default "30m" | quote }} + visibility-sweep-freq: {{ .Values.gotosocial.config.db.cache.visibilitySweepFreq | default "1m" | quote }} gts: - account-max-size: {{ .Values.gotosocial.config.db.cache.gts.accountMaxSize | default 100 }} - account-ttl: {{ .Values.gotosocial.config.db.cache.gts.accountTTl | default "5m" | quote }} - account-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.accountSweepFreq | default "10s" | quote }} + account-max-size: {{ .Values.gotosocial.config.db.cache.gts.accountMaxSize | default 2000 }} + account-ttl: {{ .Values.gotosocial.config.db.cache.gts.accountTTl | default "30m" | quote }} + account-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.accountSweepFreq | default "1m" | quote }} block-max-size: {{ .Values.gotosocial.config.db.cache.gts.blockMaxSize | default 100 }} - block-ttl: {{ .Values.gotosocial.config.db.cache.gts.blockTTl | default "5m" | quote }} - block-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.blockSweepFreq | default "10s" | quote }} - domain-block-max-size: {{ .Values.gotosocial.config.db.cache.gts.domainBlockMaxSize | default 1000 }} + block-ttl: {{ .Values.gotosocial.config.db.cache.gts.blockTTl | default "24h" | quote }} + block-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.blockSweepFreq | default "1m" | quote }} + domain-block-max-size: {{ .Values.gotosocial.config.db.cache.gts.domainBlockMaxSize | default 2000 }} domain-block-ttl: {{ .Values.gotosocial.config.db.cache.gts.domainBlockTTl | default "24h" | quote }} domain-block-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.domainBlockSweepFreq | default "1m" | quote }} - emoji-max-size: {{ .Values.gotosocial.config.db.cache.gts.emojiMaxSize | default 500 }} - emoji-ttl: {{ .Values.gotosocial.config.db.cache.gts.emojiTTl | default "5m" |quote }} - emoji-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.emojiSweepFreq | default "10s" |quote }} + emoji-max-size: {{ .Values.gotosocial.config.db.cache.gts.emojiMaxSize | default 2000 }} + emoji-ttl: {{ .Values.gotosocial.config.db.cache.gts.emojiTTl | default "30m" |quote }} + emoji-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.emojiSweepFreq | default "1m" |quote }} emoji-category-max-size: {{ .Values.gotosocial.config.db.cache.gts.emojiCategoryMaxSize | default 100 }} - emoji-category-ttl: {{ .Values.gotosocial.config.db.cache.gts.emojiCategoryTTl | default "5m" | quote }} - emoji-category-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.emojiCategorySweepFreq | default "10s" | quote }} - mention-max-size: {{ .Values.gotosocial.config.db.cache.gts.mentionMaxSize | default 500 }} - mention-ttl: {{ .Values.gotosocial.config.db.cache.gts.mentionTTl | default "5m" | quote }} - mention-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.mentionSweepFreq | default "10s" | quote }} - notification-max-size: {{ .Values.gotosocial.config.db.cache.gts.notificationMaxSize | default 500 }} - notification-ttl: {{ .Values.gotosocial.config.db.cache.gts.notificationTTl | default "5m" | quote }} - notification-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.notificationSweepFreq | default "10s" | quote }} + emoji-category-ttl: {{ .Values.gotosocial.config.db.cache.gts.emojiCategoryTTl | default "30m" | quote }} + emoji-category-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.emojiCategorySweepFreq | default "1m" | quote }} + follow-max-size: {{ .Values.gotosocial.config.db.cache.gts.followMaxSize | default 2000 }} + follow-ttl: {{ .Values.gotosocial.config.db.cache.gts.followTTL | default "30m" | quote }} + follow-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.followSweepFreq | default "1m" | quote }} + follow-request-max-size: {{ .Values.gotosocial.config.db.cache.gts.followRequestMaxSize | default 2000 }} + follow-request-ttl: {{ .Values.gotosocial.config.db.cache.gts.followRequestTTL | default "30m" | quote }} + follow-request-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.followRequestSweepFreq | default "1m" | quote }} + media-max-size: {{ .Values.gotosocial.config.db.cache.gts.mediaMaxSize | default 1000 }} + media-ttl: {{ .Values.gotosocial.config.db.cache.gts.mediaTTL | default "30m" | quote }} + media-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.mediaSweepFreq | default "1m" | quote }} + mention-max-size: {{ .Values.gotosocial.config.db.cache.gts.mentionMaxSize | default 2000 }} + mention-ttl: {{ .Values.gotosocial.config.db.cache.gts.mentionTTl | default "30m" | quote }} + mention-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.mentionSweepFreq | default "1m" | quote }} + notification-max-size: {{ .Values.gotosocial.config.db.cache.gts.notificationMaxSize | default 1000 }} + notification-ttl: {{ .Values.gotosocial.config.db.cache.gts.notificationTTl | default "30m" | quote }} + notification-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.notificationSweepFreq | default "1m" | quote }} report-max-size:: {{ .Values.gotosocial.config.db.cache.gts.reportMaxSize | default 100 }} - report-ttl: {{ .Values.gotosocial.config.db.cache.gts.reportTTl | default "5m" | quote }} - report-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.reportSweepFreq | default "10s" | quote }} - status-max-size: {{ .Values.gotosocial.config.db.cache.gts.statusMaxSize | default 500 }} - status-ttl: {{ .Values.gotosocial.config.db.cache.gts.statusTTl | default "5m" | quote }} - status-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.statusSweepFreq | default "10s" | quote }} - tombstone-max-size: {{ .Values.gotosocial.config.db.cache.gts.tombstoneMaxSize | default 100 }} - tombstone-ttl: {{ .Values.gotosocial.config.db.cache.gts.tombstoneTTl | default "5m" | quote }} - tombstone-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.tombstoneSweepFreq | default "10s" | quote }} - user-max-size: {{ .Values.gotosocial.config.db.cache.gts.userMaxSize | default 100 }} - user-ttl: {{ .Values.gotosocial.config.db.cache.gts.userTTl | default "5m" | quote }} - user-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.userSweepFreq | default "10s" | quote }} + report-ttl: {{ .Values.gotosocial.config.db.cache.gts.reportTTl | default "30m" | quote }} + report-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.reportSweepFreq | default "1m" | quote }} + status-max-size: {{ .Values.gotosocial.config.db.cache.gts.statusMaxSize | default 2000 }} + status-ttl: {{ .Values.gotosocial.config.db.cache.gts.statusTTl | default "30m" | quote }} + status-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.statusSweepFreq | default "1m" | quote }} + status-fave-max-size: {{ .Values.gotosocial.config.db.cache.gts.statusFaveMaxSize | default 2000 }} + status-fave-ttl: {{ .Values.gotosocial.config.db.cache.gts.statusFaveTTL | default "30m" | quote }} + status-fave-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.statusFaveSweepFreq | default "1m" | quote }} + tombstone-max-size: {{ .Values.gotosocial.config.db.cache.gts.tombstoneMaxSize | default 500 }} + tombstone-ttl: {{ .Values.gotosocial.config.db.cache.gts.tombstoneTTl | default "30m" | quote }} + tombstone-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.tombstoneSweepFreq | default "1m" | quote }} + user-max-size: {{ .Values.gotosocial.config.db.cache.gts.userMaxSize | default 500 }} + user-ttl: {{ .Values.gotosocial.config.db.cache.gts.userTTl | default "30m" | quote }} + user-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.userSweepFreq | default "1m" | quote }} + webfinger-max-size: {{ .Values.gotosocial.config.db.cache.gts.webfingerMaxSize | default 250 }} + webfinger-ttl: {{ .Values.gotosocial.config.db.cache.gts.webfingerTTL | default "24h" | quote }} + webfinger-sweep-freq: {{ .Values.gotosocial.config.db.cache.gts.webfingerSweepFreq | default "1m" | quote }} {{- end }} ###################### ##### WEB CONFIG ##### @@ -100,10 +136,11 @@ stringData: ########################### ##### INSTANCE CONFIG ##### ########################### - instance-expose-peers: {{ .Values.gotosocial.config.instance.instanceExposePeers | default false }} - instance-expose-suspended: {{ .Values.gotosocial.config.instance.instanceExposeSuspended | default false }} - instance-expose-public-timeline: {{ .Values.gotosocial.config.instance.instanceExposePublicTimeline | default false }} - instance-deliver-to-shared-inboxes: {{ .Values.gotosocial.config.web.instanceDeliverToSharedInboxes | default true }} + instance-expose-peers: {{ .Values.gotosocial.config.instance.exposePeers | default false }} + instance-expose-suspended: {{ .Values.gotosocial.config.instance.exposeSuspended | default false }} + instance-expose-suspended-web: {{ .Values.gotosocial.config.instance.exposeSuspendedWeb | default false }} + instance-expose-public-timeline: {{ .Values.gotosocial.config.instance.exposePublicTimeline | default false }} + instance-deliver-to-shared-inboxes: {{ .Values.gotosocial.config.web.deliverToSharedInboxes | default true }} ########################### ##### ACCOUNTS CONFIG ##### ########################### @@ -124,8 +161,8 @@ stringData: ########################## ##### STORAGE CONFIG ##### ########################## - storage-backend: {{ .Values.gotosocial.config.storage.backend | default "local" }} - storage-local-base-path: {{ .Values.gotosocial.config.storage.localBasePath | default "/gotosocial/storage" |quote }} + storage-backend: {{ .Values.gotosocial.config.storage.backend | default "local" | quote }} + storage-local-base-path: {{ .Values.gotosocial.config.storage.localBasePath | default "/gotosocial/storage" | quote }} {{- if .Values.gotosocial.config.storage.s3.enabled }} storage-s3-endpoint: {{ .Values.gotosocial.config.storage.s3.s3Endpoint | default "" }} storage-s3-proxy: {{ .Values.gotosocial.config.storage.s3.s3Proxy | default false }} @@ -147,8 +184,13 @@ stringData: ############################## letsencrypt-enabled: {{ .Values.gotosocial.config.letsencrypt.enabled | default false }} letsencrypt-port: {{ .Values.gotosocial.config.letsencrypt.port | default 80 }} - letsencrypt-cert-dir: {{ .Values.gotosocial.config.letsencrypt.certDir | default "/gotosocial/storage/certs" |quote }} + letsencrypt-cert-dir: {{ .Values.gotosocial.config.letsencrypt.certDir | default "/gotosocial/storage/certs" | quote }} letsencrypt-email-address: {{ .Values.gotosocial.config.letsencrypt.emailAddress | default "" }} + ############################## + ##### MANUAL TLS CONFIG ##### + ############################## + tls-certificate-chain: {{ .Values.gotosocial.config.certificateChain | default "" | quote }} + tls-certificate-key: {{ .Values.gotosocial.config.certificateKey | default "" | quote }} ####################### ##### OIDC CONFIG ##### ####################### @@ -164,6 +206,10 @@ stringData: {{ .Values.gotosocial.config.oidc.oidcScopes | toYaml | nindent 6 }} {{- end }} oidc-link-existing: {{ .Values.gotosocial.config.oidc.linkExisting | default false }} + oidc-admin-groups: + {{- if .Values.gotosocial.config.oidc.adminGroups -}} + {{ .Values.gotosocial.config.oidc.adminGroups | toYaml | nindent 6 }} + {{- end }} {{- end }} ####################### ##### SMTP CONFIG ##### @@ -175,6 +221,7 @@ stringData: smtp-password: {{ .Values.gotosocial.config.smtp.password | default "" }} {{- end }} smtp-from: {{ .Values.gotosocial.config.smtp.from | default "" }} + smtp-disclose-recipients: {{ .Values.gotosocial.config.smtp.discloseRecipients | default false }} ######################### ##### SYSLOG CONFIG ##### ######################### diff --git a/charts/gotosocial/values.yaml b/charts/gotosocial/values.yaml index 21dbb34..1e8502f 100644 --- a/charts/gotosocial/values.yaml +++ b/charts/gotosocial/values.yaml @@ -47,61 +47,127 @@ gotosocial: size: "10Gi" #storageClass: "" config: - #logLevel: "info" - #logDBQueries: "" - #applicationName: "gotosocial" - #host: "" - #accountDomain: "" + logLevel: "info" + logDBQueries: false + applicationName: "gotosocial" + landingPageUser: "" + host: "" + accountDomain: "" + protocol: "https" + bindAddress: "0.0.0.0" trustedProxies: - "10.0.0.0/8" - "172.16.0.0/12" - "192.168.0.0/16" db: + sqliteAddress: "/gotosocial/storage/sqlite.db" + maxOpenConnsMultiplier: 8 + sqliteSynchronous: "NORMAL" + sqliteCacheSize: "8MiB" + sqliteBusyTimeout: "5m" + visibilitySweepFreq: "1m" cache: enabled: false - gts: {} - sqlite_address: + visibilityMaxSize: 2000 + visibilityTTL: "30m" + gts: + accountMaxSize: 2000 + accountTTl: "30m" + accountSweepFreq: "1m" + blockMaxSize: 100 + blockTTl: "24h" + blockSweepFreq: "1m" + domainBlockMaxSize: 2000 + domainBlockTTl: "24h" + domainBlockSweepFreq: "1m" + emojiMaxSize: 2000 + emojiTTl: "30m" + emojiSweepFreq: "1m" + emojiCategoryMaxSize: 100 + emojiCategoryTTl: "30m" + emojiCategorySweepFreq: "1m" + followMaxSize: 2000 + followTTL: "30m" + followSweepFreq: "1m" + followRequestMaxSize: 2000 + followRequestTTL: "30m" + followRequestSweepFreq: "1m" + mediaMaxSize: 1000 + mediaTTL: "30m" + mediaSweepFreq: "1m" + mentionMaxSize: 2000 + mentionTTl: "30m" + mentionSweepFreq: "1m" + notificationMaxSize: 1000 + notificationTTl: "30m" + notificationSweepFreq: "1m" + reportMaxSize: 100 + reportTTl: "30m" + reportSweepFreq: "1m" + statusMaxSize: 2000 + statusTTl: "30m" + statusSweepFreq: "1m" + statusFaveMaxSize: 2000 + statusFaveTTL: "30m" + statusFaveSweepFreq: "1m" + tombstoneMaxSize: 500 + tombstoneTTl: "30m" + tombstoneSweepFreq: "1m" + userMaxSize: 500 + userTTl: "30m" + userSweepFreq: "1m" + webfingerMaxSize: 250 + webfingerTTL: "24h" + webfingerSweepFreq: "1m" web: templateBaseDir: "./web/template/" assetBaseDir: "./web/assets/" instance: - instanceExposePeers: "" - instanceExposeSuspended: "" - instanceDeliverToSharedInboxe: true + exposePeers: false + exposeSuspended: false + exposeSuspendedWeb: false + exposePublicTimeline: false + deliverToSharedInboxes: true accounts: - registrationOpen: "" - approvalRequired: "" - reasonRequired: "" - allowCustomCSS: "" + registrationOpen: true + approvalRequired: true + reasonRequired: true + allowCustomCSS: false media: - imageMaxSize: "" - videoMaxSize: "" - descriptionMinChars: "" - descriptionMaxChars: "" - emojiLocalMaxSize: "" - emojiRemoteMaxSize: "" + imageMaxSize: 10485760 + videoMaxSize: 41943040 + descriptionMinChars: 0 + descriptionMaxChars: 500 + mediaRemoteCacheDays: 30 + emojiLocalMaxSize: 51200 + emojiRemoteMaxSize: 102400 storage: - backend: "" - localBasePath: "" + backend: "local" + localBasePath: "/gotosocial/storage" s3: enabled: false s3Endpoint: "" + s3Proxy: false + s3UseSSL: true s3AccessKey: "" s3SecretKey: "" s3Bucket: "" statuses: - maxChars: "" - cwMaxChars: "" - pollMaxOptions: "" - pollOptionMaxChars: "" - mediaMaxFiles: "" + maxChars: 5000 + cwMaxChars: 100 + pollMaxOptions: 6 + pollOptionMaxChars: 50 + mediaMaxFiles: 6 letsencrypt: - enabled: "" - port: "" - certDir: "" + enabled: false + port: 80 + certDir: "/gotosocial/storage/certs" emailAddress: "" + tls: + certificateChain: "" + certificateKey: "" oidc: - enabled: "" + enabled: false idpName: "" skipVerification: "" issuer: "" @@ -112,23 +178,28 @@ gotosocial: - "email" - "profile" - "groups" + linkExisting: false + adminGroups: [] smtp: host: "" - port: "" + port: 0 userName: "" # password: "" # existingSecretName: "" # existingSecretKey: "" from: "" + discloseRecipients: false syslog: - enabled: "" - protocol: "" - address: "" + enabled: false + protocol: "udp" + address: "localhost:514" observability: - requestIdHeader: "" + requestIdHeader: "X-Request-Id" advanced: - cookiesSamesite: "" - rateLimitRequests: "" + cookiesSamesite: "lax" + rateLimitRequests: 300 + throttlingMultiplier: 8 + throttlingRetryAfter: "30s" postgresql: enabled: false