From f9b79ade4c37eecfa94aa89d3c91c38f75369f9f Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Mon, 25 Dec 2023 21:34:57 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/nextcloud/27.0.1/CHANGELOG.md | 99 + stable/nextcloud/27.0.1/Chart.yaml | 48 + stable/nextcloud/27.0.1/LICENSE | 106 + stable/nextcloud/27.0.1/README.md | 27 + stable/nextcloud/27.0.1/app-changelog.md | 9 + stable/nextcloud/27.0.1/app-readme.md | 8 + .../nextcloud/27.0.1/charts/common-17.1.0.tgz | Bin 0 -> 97068 bytes .../nextcloud/27.0.1/charts/redis-10.0.17.tgz | Bin 0 -> 102602 bytes stable/nextcloud/27.0.1/ix_values.yaml | 516 ++ stable/nextcloud/27.0.1/questions.yaml | 4172 +++++++++++++++++ stable/nextcloud/27.0.1/templates/NOTES.txt | 1 + .../nextcloud/27.0.1/templates/_configmap.tpl | 443 ++ .../nextcloud/27.0.1/templates/_cronjobs.tpl | 34 + .../27.0.1/templates/_ingressInjector.tpl | 24 + .../nextcloud/27.0.1/templates/_initPerms.tpl | 29 + .../27.0.1/templates/_validation.tpl | 42 + .../27.0.1/templates/_waitNextcloud.tpl | 25 + stable/nextcloud/27.0.1/templates/common.yaml | 92 + stable/nextcloud/27.0.1/values.yaml | 0 19 files changed, 5675 insertions(+) create mode 100644 stable/nextcloud/27.0.1/CHANGELOG.md create mode 100644 stable/nextcloud/27.0.1/Chart.yaml create mode 100644 stable/nextcloud/27.0.1/LICENSE create mode 100644 stable/nextcloud/27.0.1/README.md create mode 100644 stable/nextcloud/27.0.1/app-changelog.md create mode 100644 stable/nextcloud/27.0.1/app-readme.md create mode 100644 stable/nextcloud/27.0.1/charts/common-17.1.0.tgz create mode 100644 stable/nextcloud/27.0.1/charts/redis-10.0.17.tgz create mode 100644 stable/nextcloud/27.0.1/ix_values.yaml create mode 100644 stable/nextcloud/27.0.1/questions.yaml create mode 100644 stable/nextcloud/27.0.1/templates/NOTES.txt create mode 100644 stable/nextcloud/27.0.1/templates/_configmap.tpl create mode 100644 stable/nextcloud/27.0.1/templates/_cronjobs.tpl create mode 100644 stable/nextcloud/27.0.1/templates/_ingressInjector.tpl create mode 100644 stable/nextcloud/27.0.1/templates/_initPerms.tpl create mode 100644 stable/nextcloud/27.0.1/templates/_validation.tpl create mode 100644 stable/nextcloud/27.0.1/templates/_waitNextcloud.tpl create mode 100644 stable/nextcloud/27.0.1/templates/common.yaml create mode 100644 stable/nextcloud/27.0.1/values.yaml diff --git a/stable/nextcloud/27.0.1/CHANGELOG.md b/stable/nextcloud/27.0.1/CHANGELOG.md new file mode 100644 index 00000000000..5fa8dd0e159 --- /dev/null +++ b/stable/nextcloud/27.0.1/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [nextcloud-27.0.1](https://github.com/truecharts/charts/compare/nextcloud-27.0.0...nextcloud-27.0.1) (2023-12-25) + +### Chore + +- mount additional storage to cron containers too ([#16542](https://github.com/truecharts/charts/issues/16542)) + + + + +## [nextcloud-27.0.0](https://github.com/truecharts/charts/compare/nextcloud-26.0.1...nextcloud-27.0.0) (2023-12-25) + +### Chore + +- update helm chart common to 17.1.0 by renovate ([#16532](https://github.com/truecharts/charts/issues/16532)) + + + + +## [nextcloud-26.0.1](https://github.com/truecharts/charts/compare/nextcloud-26.0.0...nextcloud-26.0.1) (2023-12-24) + +### Chore + +- update helm general non-major by renovate ([#16384](https://github.com/truecharts/charts/issues/16384)) + + + + +## [nextcloud-26.0.0](https://github.com/truecharts/charts/compare/nextcloud-25.0.14...nextcloud-26.0.0) (2023-12-24) + +### Chore + +- BREAKING CHANGE remove service settings for SCALE GUI ([#16379](https://github.com/truecharts/charts/issues/16379)) + + ### Docs + +- update installation notes ([#16380](https://github.com/truecharts/charts/issues/16380)) + + + + +## [nextcloud-25.0.14](https://github.com/truecharts/charts/compare/nextcloud-25.0.13...nextcloud-25.0.14) (2023-12-24) + +### Chore + +- update helm general non-major by renovate ([#16376](https://github.com/truecharts/charts/issues/16376)) + + + + +## [nextcloud-25.0.13](https://github.com/truecharts/charts/compare/nextcloud-25.0.12...nextcloud-25.0.13) (2023-12-23) + +### Chore + +- update helm general non-major by renovate ([#16373](https://github.com/truecharts/charts/issues/16373)) + + + + +## [nextcloud-25.0.12](https://github.com/truecharts/charts/compare/nextcloud-25.0.11...nextcloud-25.0.12) (2023-12-23) + +### Chore + +- update helm general non-major by renovate ([#16369](https://github.com/truecharts/charts/issues/16369)) + + + + +## [nextcloud-25.0.11](https://github.com/truecharts/charts/compare/nextcloud-25.0.10...nextcloud-25.0.11) (2023-12-23) + +### Chore + +- update helm general non-major by renovate ([#16361](https://github.com/truecharts/charts/issues/16361)) + + + + +## [nextcloud-25.0.10](https://github.com/truecharts/charts/compare/nextcloud-25.0.9...nextcloud-25.0.10) (2023-12-22) + +### Chore + +- update helm general non-major by renovate ([#16359](https://github.com/truecharts/charts/issues/16359)) + + + + +## [nextcloud-25.0.9](https://github.com/truecharts/charts/compare/nextcloud-25.0.8...nextcloud-25.0.9) (2023-12-22) + +### Fix + +- expose custom options for homepage integration + + + diff --git a/stable/nextcloud/27.0.1/Chart.yaml b/stable/nextcloud/27.0.1/Chart.yaml new file mode 100644 index 00000000000..e467a2b7320 --- /dev/null +++ b/stable/nextcloud/27.0.1/Chart.yaml @@ -0,0 +1,48 @@ +kubeVersion: ">=1.24.0-0" +apiVersion: v2 +name: nextcloud +version: 27.0.1 +appVersion: 28.0.0 +description: A private cloud server that puts the control and security of your own data back into your hands. +home: https://truecharts.org/charts/stable/nextcloud +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nextcloud.png +deprecated: false +sources: + - https://github.com/nextcloud/helm + - https://github.com/nextcloud/docker + - https://github.com/truecharts/charts/tree/master/charts/stable/nextcloud + - https://hub.docker.com/r/collabora/code +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +keywords: + - nextcloud + - storage + - http + - web + - php +dependencies: + - name: common + version: 17.1.0 + repository: https://library-charts.truecharts.org + condition: "" + alias: "" + tags: [] + import-values: [] + - name: redis + version: 10.0.17 + repository: https://deps.truecharts.org + condition: redis.enabled + alias: "" + tags: [] + import-values: [] +annotations: + max_scale_version: 23.10.2 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: cloud + truecharts.org/max_helm_version: "3.13" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: stable +type: application diff --git a/stable/nextcloud/27.0.1/LICENSE b/stable/nextcloud/27.0.1/LICENSE new file mode 100644 index 00000000000..33a8cbb23f0 --- /dev/null +++ b/stable/nextcloud/27.0.1/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Blocky" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/stable/nextcloud/27.0.1/README.md b/stable/nextcloud/27.0.1/README.md new file mode 100644 index 00000000000..d551b5d959d --- /dev/null +++ b/stable/nextcloud/27.0.1/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/nextcloud) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/nextcloud/27.0.1/app-changelog.md b/stable/nextcloud/27.0.1/app-changelog.md new file mode 100644 index 00000000000..6ada61e9cc3 --- /dev/null +++ b/stable/nextcloud/27.0.1/app-changelog.md @@ -0,0 +1,9 @@ + + +## [nextcloud-27.0.1](https://github.com/truecharts/charts/compare/nextcloud-27.0.0...nextcloud-27.0.1) (2023-12-25) + +### Chore + +- mount additional storage to cron containers too ([#16542](https://github.com/truecharts/charts/issues/16542)) + + \ No newline at end of file diff --git a/stable/nextcloud/27.0.1/app-readme.md b/stable/nextcloud/27.0.1/app-readme.md new file mode 100644 index 00000000000..1369f69bf57 --- /dev/null +++ b/stable/nextcloud/27.0.1/app-readme.md @@ -0,0 +1,8 @@ +A private cloud server that puts the control and security of your own data back into your hands. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/nextcloud](https://truecharts.org/charts/stable/nextcloud) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/nextcloud/27.0.1/charts/common-17.1.0.tgz b/stable/nextcloud/27.0.1/charts/common-17.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b40bd72708002b5ac7afbc925e06760054cfee21 GIT binary patch literal 97068 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 TF#Z1l00960?4*=b06Gi+L)ca) literal 0 HcmV?d00001 diff --git a/stable/nextcloud/27.0.1/charts/redis-10.0.17.tgz b/stable/nextcloud/27.0.1/charts/redis-10.0.17.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7f7b9206695ea3049932d5001ba860a69326bbba GIT binary patch literal 102602 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 literal 0 HcmV?d00001 diff --git a/stable/nextcloud/27.0.1/ix_values.yaml b/stable/nextcloud/27.0.1/ix_values.yaml new file mode 100644 index 00000000000..2150ea92657 --- /dev/null +++ b/stable/nextcloud/27.0.1/ix_values.yaml @@ -0,0 +1,516 @@ +image: + repository: tccr.io/truecharts/nextcloud-fpm + pullPolicy: IfNotPresent + tag: v28.0.0@sha256:a765a49bafef4e3e6c1f874c5ee1c4d2ce39b2bd6793b9a2e044ed75645bbc1a +nginxImage: + repository: nginxinc/nginx-unprivileged + pullPolicy: IfNotPresent + tag: 1.25.3@sha256:1d026ae92e50e76c77ca776f234f154d4a1d39e33e8f813115e53c2a9b893bc9 +imaginaryImage: + repository: tccr.io/truecharts/nextcloud-imaginary + pullPolicy: IfNotPresent + tag: v20230401@sha256:6a227d1b0200d29f25028e07b8852f60e3d91a5814048933e70eccee749dc04c +hpbImage: + repository: tccr.io/truecharts/nextcloud-push-notify + pullPolicy: IfNotPresent + tag: v0.6.3@sha256:b9c35ab123354eeac3996e361f8c30b8e4de6d2ccd69e5179a7c2a101a67b46f +clamavImage: + repository: clamav/clamav + pullPolicy: IfNotPresent + tag: 1.2.1@sha256:d584c29eefc29e138eb14f243abef2f6712cffecac52194626a2b2f6bb3ec2c7 +collaboraImage: + repository: collabora/code + pullPolicy: IfNotPresent + tag: 23.05.6.3.1@sha256:6d21951e6376be4a12009b5058c57f3da7df06faf05c62406030b3652a3e78f6 +nextcloud: + # Initial Credentials + credentials: + initialAdminUser: admin + initialAdminPassword: adminpass + # General settings + general: + # Custom Nextcloud Scripts + run_optimize: true + default_phone_region: GR + # IP used for exposing nextcloud, + # often the loadbalancer IP + accessIP: "" + # Allows Nextcloud to connect to unsecure (http) endpoints + force_enable_allow_local_remote_servers: false + # File settings + files: + shared_folder_name: Shared + max_chunk_size: 10485760 + # Expiration settings + expirations: + activity_expire_days: 90 + trash_retention_obligation: auto + versions_retention_obligation: auto + # Previews settings + previews: + enabled: true + # It will also deploy the container + imaginary: true + cron: true + schedule: "*/30 * * * *" + max_x: 2048 + max_y: 2048 + max_memory: 1024 + max_file_size_image: 50 + # Setting for Imaginary + max_allowed_resolution: 18.0 + jpeg_quality: 60 + square_sizes: 32 256 + width_sizes: 256 384 + height_sizes: 256 + # Casings are important + # https://github.com/nextcloud/server/blob/master/config/config.sample.php#L1269 + # Only the last part of the provider is needed + providers: + - PNG + - JPEG + # Logging settings + logging: + log_level: 2 + log_file: /var/www/html/data/logs/nextcloud.log + log_audit_file: /var/www/html/data/logs/audit.log + log_date_format: d/m/Y H:i:s + # ClamAV settings + clamav: + # It will also deploy the container + # Note that this runs as root + enabled: false + stream_max_length: 26214400 + file_max_size: -1 + infected_action: only_log + # Notify Push settings + notify_push: + # It will also deploy the container + enabled: true + # Collabora settings + collabora: + # It will also deploy the container + enabled: false + # default|compact|tabbed + interface_mode: default + username: admin + password: changeme + dictionaries: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + onlyoffice: + # It will not deploy the container + # Only add the OnlyOffice settings + enabled: false + url: "" + internal_url: "" + verify_ssl: true + jwt: "" + jwt_header: Authorization + # PHP settings + php: + memory_limit: 1G + upload_limit: 10G + pm_max_children: 180 + pm_start_servers: 18 + pm_min_spare_servers: 12 + pm_max_spare_servers: 30 + opcache: + interned_strings_buffer: 32 + max_accelerated_files: 10000 + memory_consumption: 128 + revalidate_freq: 60 + jit_buffer_size: 128 +# Do NOT edit below this line +workload: + # Nextcloud php-fpm + main: + type: Deployment + podSpec: + containers: + main: + enabled: true + primary: true + envFrom: + - configMapRef: + name: nextcloud-config + probes: + liveness: + enabled: true + type: exec + command: /healthcheck.sh + readiness: + enabled: true + type: exec + command: /healthcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}" + nginx: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + nginx: + enabled: true + primary: true + imageSelector: nginxImage + probes: + readiness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: "{{ .Values.service.main.ports.main.port }}" + notify: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + notify: + primary: true + enabled: true + imageSelector: hpbImage + envFrom: + - configMapRef: + name: hpb-config + probes: + readiness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: 7867 + imaginary: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + imaginary: + primary: true + enabled: true + imageSelector: imaginaryImage + command: imaginary + args: + - -p + - "{{ .Values.service.imaginary.ports.imaginary.port }}" + - -concurrency + - "10" + - -max-allowed-resolution + - "{{ .Values.nextcloud.previews.max_allowed_resolution }}" + - -enable-url-source + - -return-size + probes: + readiness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + liveness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + clamav: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + clamav: + primary: true + enabled: true + imageSelector: clamavImage + # FIXME: https://github.com/Cisco-Talos/clamav/issues/478 + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + envFrom: + - configMapRef: + name: clamav-config + probes: + readiness: + enabled: true + type: exec + command: clamdcheck.sh + liveness: + enabled: true + type: exec + command: clamdcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.clamav.ports.clamav.targetPort }}" + collabora: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + collabora: + primary: true + enabled: true + imageSelector: collaboraImage + securityContext: + runAsUser: 100 + runAsGroup: 102 + readOnlyRootFilesystem: false + allowPrivilegeEscalation: true + capabilities: + add: + - CHOWN + - FOWNER + - SYS_CHROOT + - MKNOD + envFrom: + - configMapRef: + name: collabora-config + probes: + readiness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + liveness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" +cronjobs: + # Don't change names, it's used in the persistence + - name: nextcloud-cron + enabled: true + schedule: "*/5 * * * *" + cmd: + - echo "Running [php -f /var/www/html/cron.php] ..." + - php -f /var/www/html/cron.php + - echo "Finished [php -f /var/www/html/cron.php]" + - name: preview-cron + enabled: "{{ .Values.nextcloud.previews.cron }}" + schedule: "{{ .Values.nextcloud.previews.schedule }}" + cmd: + - echo "Running [occ preview:pre-generate] ..." + - occ preview:pre-generate + - echo "Finished [occ preview:pre-generate]" +service: + # Main service links to ingress easier + # That's why the nginx is swapped with nextcloud + main: + targetSelector: nginx + ports: + main: + targetSelector: nginx + port: 8080 + nextcloud: + enabled: true + targetSelector: main + ports: + nextcloud: + enabled: true + targetSelector: main + port: 9000 + targetPort: 9000 + notify: + enabled: true + targetSelector: notify + ports: + notify: + enabled: true + primary: true + port: 7867 + targetPort: 7867 + targetSelector: notify + metrics: + enabled: true + port: 7868 + targetSelector: notify + imaginary: + enabled: true + targetSelector: imaginary + ports: + imaginary: + enabled: true + port: 9090 + targetSelector: imaginary + clamav: + enabled: true + targetSelector: clamav + ports: + clamav: + enabled: true + port: 3310 + targetPort: 3310 + targetSelector: clamav + collabora: + enabled: true + targetSelector: collabora + ports: + collabora: + enabled: true + port: 9980 + targetPort: 9980 + targetSelector: collabora +persistence: + php-tune: + enabled: true + type: configmap + objectName: php-tune + targetSelector: + main: + main: + mountPath: /usr/local/etc/php-fpm.d/zz-tune.conf + subPath: zz-tune.conf + readOnly: true + redis-session: + enabled: true + type: configmap + objectName: redis-session + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/redis-session.ini + subPath: redis-session.ini + readOnly: true + opcache-recommended: + enabled: true + type: configmap + objectName: opcache + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/opcache-recommended.ini + subPath: opcache-recommended.ini + readOnly: true + nginx: + enabled: true + type: configmap + objectName: nginx-config + targetSelector: + nginx: + nginx: + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + readOnly: true + nginx-temp: + enabled: true + type: emptyDir + targetSelector: + nginx: + nginx: + mountPath: /tmp/nginx + html: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html + preview-cron: + preview-cron: + mountPath: /var/www/html + nginx: + nginx: + mountPath: /var/www/html + readOnly: true + config: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/config + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/config + preview-cron: + preview-cron: + mountPath: /var/www/html/config + notify: + notify: + mountPath: /var/www/html/config + readOnly: true + nginx: + nginx: + mountPath: /var/www/html/config + readOnly: true + data: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/data + init-perms: + mountPath: /var/www/html/data + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/data + preview-cron: + preview-cron: + mountPath: /var/www/html/data + nginx: + nginx: + mountPath: /var/www/html/data + readOnly: true +cnpg: + main: + enabled: true + user: nextcloud + database: nextcloud +redis: + enabled: true + username: default +portal: + open: + enabled: true +updated: true + +ingress: + main: + required: true diff --git a/stable/nextcloud/27.0.1/questions.yaml b/stable/nextcloud/27.0.1/questions.yaml new file mode 100644 index 00000000000..ab42b96a7de --- /dev/null +++ b/stable/nextcloud/27.0.1/questions.yaml @@ -0,0 +1,4172 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: nextcloud + group: App Configuration + label: Nextcloud + schema: + additional_attrs: true + type: dict + attrs: + - variable: credentials + label: Initial Credentials + schema: + additional_attrs: true + type: dict + attrs: + - variable: initialAdminUser + label: Initial Admin User + description: Sets the initial admin username + schema: + type: string + required: true + default: "" + - variable: initialAdminPassword + label: Initial Admin Password + description: Sets the initial admin password + schema: + type: string + required: true + private: true + default: "" + - variable: general + label: General + schema: + additional_attrs: true + type: dict + attrs: + - variable: run_optimize + label: Run Optimize Scripts + description: | + Runs the following commands at startup:
+ occ db:add-missing-indices
+ occ db:add-missing-columns
+ occ db:add-missing-primary-keys
+ yes | occ db:convert-filecache-bigint
+ occ maintenance:mimetype:update-js
+ occ maintenance:mimetype:update-db
+ occ maintenance:update:htaccess
+ schema: + type: boolean + default: false + - variable: default_phone_region + label: Default Phone Region + description: | + Sets the default phone region in ISO_3166-1 format (e.g. US).
+ https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + schema: + type: string + valid_chars: '^[A-Z]{2}$' + required: true + default: "" + - variable: accessIP + label: Access IP + description: Set to the IP-Address used to reach Nextcloud. + schema: + type: string + required: true + $ref: + - "definitions/nodeIP" + - variable: force_enable_allow_local_remote_servers + label: Force Enable Allow Local Remote Servers + description: + Enables 'allow_local_remote_servers' option + schema: + type: boolean + default: false + - variable: files + label: Files Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: shared_folder_name + label: Shared Folder Name + schema: + type: string + required: true + default: Shared + - variable: max_chunk_size + label: Max Chunk Size + schema: + type: int + required: true + default: 10485760 + - variable: expirations + label: Expirations Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: activity_expire_days + label: Activity Expire Days + schema: + type: int + required: true + default: 90 + - variable: trash_retention_obligation + label: Trash Retention Obligation + schema: + type: string + required: true + default: auto + - variable: versions_retention_obligation + label: Versions Retention Obligation + schema: + type: string + required: true + default: auto + - variable: previews + label: Previews Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Previews + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: imaginary + label: Enable imaginary + description: | + Enable imaginary to generate previews in the background.
+ It will also deploy the needed container. + schema: + type: boolean + default: true + - variable: cron + label: Enable cron + description: | + Enable cron to generate previews in the background. + schema: + type: boolean + default: true + - variable: schedule + label: Cron Schedule + schema: + type: string + default: "*/30 * * * *" + - variable: max_x + label: Max X + schema: + type: int + required: true + default: 2048 + - variable: max_y + label: Max Y + schema: + type: int + required: true + default: 2048 + - variable: max_memory + label: Max Memory + schema: + type: int + required: true + default: 1024 + - variable: max_allowed_resolution + label: Max Allowed Resolution + schema: + type: string + valid_chars: '^[0-9]{1,5}(\.[0-9]{1,2})?$' + show_if: [["imaginary", "=", true]] + required: true + default: "18.0" + - variable: max_file_size_image + label: Max File Size Image + schema: + type: int + required: true + default: 50 + - variable: jpeg_quality + label: JPEG Quality + schema: + type: int + required: true + default: 60 + - variable: square_sizes + label: Square Sizes + schema: + type: string + required: true + default: "32 256" + - variable: width_sizes + label: Width Sizes + schema: + type: string + required: true + default: "256 384" + - variable: height_sizes + label: Height Sizes + schema: + type: string + required: true + default: "256" + - variable: providers + label: Providers + schema: + type: list + empty: false + required: true + default: + - BMP + - GIF + - JPEG + - Krita + - MarkDown + - MP3 + - OpenDocument + - PNG + - TXT + - XBitmap + items: + - variable: provider_entry + label: Provider Entry + schema: + type: string + required: true + default: "" + enum: + - value: BMP + description: BMP + - value: Font + description: Font + - value: GIF + description: GIF + - value: HEIC + description: HEIC + - value: Illustrator + description: Illustrator + - value: JPEG + description: JPEG + - value: Krita + description: Krita + - value: MarkDown + description: MarkDown + - value: Movie + description: Movie + - value: MP3 + description: MP3 + - value: MSOffice2003 + description: MSOffice2003 + - value: MSOffice2007 + description: MSOffice2007 + - value: MSOfficeDoc + description: MSOfficeDoc + - value: OpenDocument + description: OpenDocument + - value: PDF + description: PDF + - value: Photoshop + description: Photoshop + - value: PNG + description: PNG + - value: Postscript + description: Postscript + - value: StarOffice + description: StarOffice + - value: SVG + description: SVG + - value: TIFF + description: TIFF + - value: TXT + description: TXT + - value: XBitmap + description: XBitmap + - variable: logging + label: Logging Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: log_level + label: Log Level + schema: + type: int + required: true + default: 2 + enum: + - value: 0 + description: Debug + - value: 1 + description: Info + - value: 2 + description: Warning + - value: 3 + description: Error + - value: 4 + description: Fatal + - variable: log_date_format + label: Log Date Format + schema: + type: string + required: true + default: d/m/Y H:i:s + - variable: notify_push + label: Notify Push Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Notify Push + description: | + Enable and Configure Notify Push.
+ It will also deploy the needed container + schema: + type: boolean + default: true + - variable: clamav + label: ClamAV Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable ClamAV + description: | + Enable and configure ClamAV.
+ It will also deploy the needed container.
+ Keep in mind that this will run as root.
+ https://github.com/Cisco-Talos/clamav/issues/478 + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: stream_max_length + label: Stream Max Length + schema: + type: int + required: true + default: 104857600 + - variable: file_max_size + label: File Max Size + schema: + type: int + required: true + default: -1 + - variable: infected_action + label: Infected Action + schema: + type: string + required: true + default: only_log + enum: + - value: delete + description: Delete + - value: only_log + description: Only Log + - variable: collabora + label: Collabora Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Collabora + description: | + Enable and configure Collabora.
+ It will also deploy the needed container.
+ Keep in mind that this will run as root. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: interface_mode + label: Interface Mode + schema: + type: string + required: true + default: default + enum: + - value: default + description: Default + - value: compact + description: Compact + - value: tabbed + description: Tabbed + - variable: username + label: Username + schema: + type: string + default: admin + required: true + - variable: password + label: Password + schema: + type: string + default: "" + required: true + - variable: dictionaries + label: Dictionaries + schema: + type: list + empty: false + required: true + default: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + items: + - variable: dictionary + label: Dictionary + schema: + type: string + required: true + default: "" + - variable: onlyoffice + label: Only Office Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable OnlyOffice + description: | + Enable and configure OnlyOffice.
+ This will NOT deploy the needed container.
+ You need to deploy it yourself. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: url + label: Public URL + description: | + The public FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: internal_url + label: Internal URL + description: | + The internal FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: verify_ssl + label: Verify SSL (Advanced) + description: | + Verify SSL when connecting to OnlyOffice Document Server + schema: + type: boolean + default: true + - variable: jwt + label: JWT + schema: + type: string + required: true + default: "" + - variable: jwt_header + label: JWT Header + schema: + type: string + required: true + default: Authorization + - variable: php + label: PHP Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: memory_limit + label: Memory Limit + schema: + type: string + required: true + default: 1G + - variable: upload_limit + label: Upload Limit + schema: + type: string + required: true + default: 10G + - variable: pm_max_children + label: Max Children + schema: + type: int + required: true + default: 180 + - variable: pm_start_servers + label: Start Servers + schema: + type: int + required: true + default: 18 + - variable: pm_min_spare_servers + label: Minimum Spare Servers + schema: + type: int + required: true + default: 12 + - variable: pm_max_spare_servers + label: Maximum Spare Servers + schema: + type: int + required: true + default: 30 + - variable: opcache + label: OPCache Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: interned_strings_buffer + label: Interned Strings Buffer + description: The amount of memory used to store interned strings, in megabytes. + schema: + type: int + required: true + default: 32 + - variable: max_accelerated_files + label: Max Accelerated Files + description: The maximum number of keys (and therefore scripts) in the OPcache hash table. + schema: + type: int + required: true + default: 10000 + - variable: memory_consumption + label: Memory Consumption + description: The size of the shared memory storage used by OPcache, in megabytes. + schema: + type: int + required: true + default: 128 + - variable: revalidate_freq + label: Revalidate Frequency + description: How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request. + schema: + type: int + required: true + default: 60 + - variable: jit_buffer_size + label: JIT Buffer Size + description: The amount of shared memory (in megabytes) to reserve for compiled JIT code. A zero value disables the JIT. + schema: + type: int + required: true + default: 128 + + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: html + label: App HTML Storage + description: Stores the Application HTML. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: config + label: App Config Storage + description: Stores the Application Config. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: data + label: User Data Storage + description: Stores the User Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID of the user running the application + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true + - variable: cnpg + group: Postgresql + label: "CloudNative-PG (CNPG)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Postgresql Database" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hibernate + label: Hibernate + description: "enable to safely hibernate and shutdown the postgresql cluster" + schema: + type: boolean + default: false + - variable: mode + label: Mode + description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.' + schema: + type: string + default: "standalone" + enum: + - value: standalone + description: standalone + - value: replica + description: replica + - value: recovery + description: recovery + - variable: cluster + label: "Cluster Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 2 + - variable: singleNode + label: singleNode + schema: + type: boolean + default: true + hidden: true + - variable: storage + label: "Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: walStorage + label: "WAL Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: monitoring + label: "Monitoring Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enablePodMonitor + label: "enablePodMonitor" + schema: + type: boolean + default: true + - variable: disableDefaultQueries + label: "disableDefaultQueries" + schema: + type: boolean + default: false + - variable: pooler + label: "Pooler Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 2 + - variable: createRO + label: "Create ReadOnly Instance" + schema: + type: boolean + default: false + - variable: recovery + label: "Recovery Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: method + label: "method" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "object_store" + - variable: backupName + label: "backupName" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + - variable: backups + label: "Backup Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: destinationPath + label: "destinationPath" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: retentionPolicy + label: "retentionPolicy" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "30d" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + - variable: scheduledBackups + label: ScheduledBackups + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: backupschedule + label: BackupSchedule + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "daily-backup" + required: true + - variable: schedule + label: schedule + schema: + type: string + required: true + default: "0 0 0 * * *" + - variable: backupOwnerReference + label: backupOwnerReference + schema: + type: string + required: true + default: "self" + - variable: immediate + label: immediate + schema: + type: boolean + default: false + - variable: suspend + label: suspend + schema: + type: boolean + default: false + - variable: manualBackups + label: manualBackups + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: backup + label: Backup + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/nextcloud/27.0.1/templates/NOTES.txt b/stable/nextcloud/27.0.1/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/stable/nextcloud/27.0.1/templates/_configmap.tpl b/stable/nextcloud/27.0.1/templates/_configmap.tpl new file mode 100644 index 00000000000..081cf5d71c2 --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/_configmap.tpl @@ -0,0 +1,443 @@ +{{- define "nextcloud.accessurl" -}} + {{- $accessUrl := .Values.chartContext.appUrl -}} + {{- if or (contains "127.0.0.1" $accessUrl) (contains "localhost" $accessUrl) -}} + {{- if .Values.nextcloud.general.accessIP -}} + {{- $prot := "http" -}} + {{- $host := .Values.nextcloud.general.accessIP -}} + {{- $port := .Values.service.main.ports.main.port -}} + {{/* + Allowing here to override protocol and port + should be enough to make it work with any rev proxy + */}} + {{- $accessUrl = printf "%v://%v:%v" $prot $host $port -}} + {{- end -}} + {{- end -}} + + {{- $accessUrl -}} +{{- end -}} + +{{- define "nextcloud.accesshost" -}} + {{- $accessUrl := (include "nextcloud.accessurl" $) -}} + {{- $accessHost := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} + {{- $accessHost = regexReplaceAll "(.*):.*" $accessHost "${1}" -}} + + {{- $accessHost -}} +{{- end -}} + +{{/* Define the configmap */}} +{{- define "nextcloud.configmaps" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $fqdn := (include "tc.v1.common.lib.chart.names.fqdn" $) -}} +{{- $accessUrl := (include "nextcloud.accessurl" $) -}} +{{- $accessHost := (include "nextcloud.accesshost" $) -}} +{{- $accessHostPort := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} +{{- $accessProtocol := regexReplaceAll "(.*)://.*" $accessUrl "${1}" -}} +{{- $redisHost := .Values.redis.creds.plainhost | trimAll "\"" -}} +{{- $redisPass := .Values.redis.creds.redisPassword | trimAll "\"" -}} +{{- $healthHost := "kube.internal.healthcheck" -}} + +php-tune: + enabled: true + data: + zz-tune.conf: | + [www] + pm.max_children = {{ .Values.nextcloud.php.pm_max_children }} + pm.start_servers = {{ .Values.nextcloud.php.pm_start_servers }} + pm.min_spare_servers = {{ .Values.nextcloud.php.pm_min_spare_servers }} + pm.max_spare_servers = {{ .Values.nextcloud.php.pm_max_spare_servers }} + +opcache: + enabled: true + data: + opcache-recommended.ini: | + opcache.enable=1 + opcache.save_comments=1 + opcache.jit=1255 + opcache.interned_strings_buffer={{ .Values.nextcloud.opcache.interned_strings_buffer }} + opcache.max_accelerated_files={{ .Values.nextcloud.opcache.max_accelerated_files }} + opcache.memory_consumption={{ .Values.nextcloud.opcache.memory_consumption }} + opcache.revalidate_freq={{ .Values.nextcloud.opcache.revalidate_freq }} + opcache.jit_buffer_size={{ printf "%vM" .Values.nextcloud.opcache.jit_buffer_size }} + +redis-session: + enabled: true + data: + redis-session.ini: | + session.save_handler = redis + session.save_path = {{ printf "tcp://%v:6379?auth=%v" $redisHost $redisPass | quote }} + redis.session.locking_enabled = 1 + redis.session.lock_retries = -1 + redis.session.lock_wait_time = 10000 + +hpb-config: + enabled: {{ .Values.nextcloud.notify_push.enabled }} + data: + NEXTCLOUD_URL: {{ printf "http://%v:%v" $fullname .Values.service.main.ports.main.port }} + HPB_HOST: {{ $healthHost }} + CONFIG_FILE: {{ printf "%v/config.php" .Values.persistence.config.targetSelector.notify.notify.mountPath }} + METRICS_PORT: {{ .Values.service.notify.ports.metrics.port | quote }} + +clamav-config: + enabled: {{ .Values.nextcloud.clamav.enabled }} + data: + CLAMAV_NO_CLAMD: "false" + CLAMAV_NO_FRESHCLAMD: "true" + CLAMAV_NO_MILTERD: "true" + CLAMD_STARTUP_TIMEOUT: "1800" + +collabora-config: + enabled: {{ .Values.nextcloud.collabora.enabled }} + data: + aliasgroup1: {{ $accessUrl }} + server_name: {{ $accessHostPort }} + dictionaries: {{ join " " .Values.nextcloud.collabora.dictionaries }} + username: {{ .Values.nextcloud.collabora.username | quote }} + password: {{ .Values.nextcloud.collabora.password | quote }} + DONT_GEN_SSL_CERT: "true" + # mount_jail_tree is only used for local storage + # not needed for WOPI https://github.com/CollaboraOnline/online/issues/3604#issuecomment-989833814 + extra_params: | + --o:ssl.enable=false + --o:ssl.termination=true + --o:net.service_root=/collabora + --o:home_mode.enable=true + --o:welcome.enable=false + --o:logging.level=warning + --o:logging.level_startup=warning + --o:security.seccomp=true + --o:mount_jail_tree=false + --o:user_interface.mode={{ .Values.nextcloud.collabora.interface_mode }} + +nextcloud-config: + enabled: true + data: + {{/* Database */}} + POSTGRES_DB: {{ .Values.cnpg.main.database | quote }} + POSTGRES_USER: {{ .Values.cnpg.main.user | quote }} + POSTGRES_PASSWORD: {{ .Values.cnpg.main.creds.password | trimAll "\"" }} + POSTGRES_HOST: {{ .Values.cnpg.main.creds.host | trimAll "\"" }} + + {{/* Redis */}} + NX_REDIS_HOST: {{ $redisHost }} + NX_REDIS_PASS: {{ $redisPass }} + + {{/* Nextcloud INITIAL credentials */}} + NEXTCLOUD_ADMIN_USER: {{ .Values.nextcloud.credentials.initialAdminUser | quote }} + NEXTCLOUD_ADMIN_PASSWORD: {{ .Values.nextcloud.credentials.initialAdminPassword | quote }} + + {{/* PHP Variables */}} + PHP_MEMORY_LIMIT: {{ .Values.nextcloud.php.memory_limit | quote }} + PHP_UPLOAD_LIMIT: {{ .Values.nextcloud.php.upload_limit | quote }} + + {{/* Notify Push */}} + NX_NOTIFY_PUSH: {{ .Values.nextcloud.notify_push.enabled | quote }} + {{- if .Values.nextcloud.notify_push.enabled }} + NX_NOTIFY_PUSH_ENDPOINT: {{ $accessUrl }}/push + {{- end }} + + {{/* Previews */}} + NX_PREVIEWS: {{ .Values.nextcloud.previews.enabled | quote }} + NX_PREVIEW_PROVIDERS: {{ join " " .Values.nextcloud.previews.providers }} + NX_PREVIEW_MAX_X: {{ .Values.nextcloud.previews.max_x | quote }} + NX_PREVIEW_MAX_Y: {{ .Values.nextcloud.previews.max_y | quote }} + NX_PREVIEW_MAX_MEMORY: {{ .Values.nextcloud.previews.max_memory | quote }} + NX_PREVIEW_MAX_FILESIZE_IMAGE: {{ .Values.nextcloud.previews.max_file_size_image | quote }} + NX_JPEG_QUALITY: {{ .Values.nextcloud.previews.jpeg_quality | quote }} + NX_PREVIEW_SQUARE_SIZES: {{ .Values.nextcloud.previews.square_sizes | quote }} + NX_PREVIEW_WIDTH_SIZES: {{ .Values.nextcloud.previews.width_sizes | quote }} + NX_PREVIEW_HEIGHT_SIZES: {{ .Values.nextcloud.previews.height_sizes | quote }} + + {{/* Imaginary */}} + NX_IMAGINARY: {{ and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary | quote }} + {{- if and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary }} + NX_IMAGINARY_URL: {{ printf "http://%v-imaginary:%v" $fullname .Values.service.imaginary.ports.imaginary.port }} + {{- end }} + + {{/* Expirations */}} + NX_ACTIVITY_EXPIRE_DAYS: {{ .Values.nextcloud.expirations.activity_expire_days | quote }} + NX_TRASH_RETENTION: {{ .Values.nextcloud.expirations.trash_retention_obligation | quote }} + NX_VERSIONS_RETENTION: {{ .Values.nextcloud.expirations.versions_retention_obligation | quote }} + + {{/* General */}} + NX_RUN_OPTIMIZE: {{ .Values.nextcloud.general.run_optimize | quote }} + NX_DEFAULT_PHONE_REGION: {{ .Values.nextcloud.general.default_phone_region | quote }} + NEXTCLOUD_DATA_DIR: {{ .Values.persistence.data.targetSelector.main.main.mountPath }} + NX_FORCE_ENABLE_ALLOW_LOCAL_REMOTE_SERVERS: {{ .Values.nextcloud.general.force_enable_allow_local_remote_servers | quote }} + + {{/* Files */}} + NX_SHARED_FOLDER_NAME: {{ .Values.nextcloud.files.shared_folder_name | quote }} + NX_MAX_CHUNKSIZE: {{ .Values.nextcloud.files.max_chunk_size | mul 1 | quote }} + + {{/* Logging */}} + NX_LOG_LEVEL: {{ .Values.nextcloud.logging.log_level | quote }} + NX_LOG_FILE: {{ .Values.nextcloud.logging.log_file | quote }} + NX_LOG_FILE_AUDIT: {{ .Values.nextcloud.logging.log_audit_file | quote }} + NX_LOG_DATE_FORMAT: {{ .Values.nextcloud.logging.log_date_format | quote }} + NX_LOG_TIMEZONE: {{ .Values.TZ | quote }} + + {{/* ClamAV */}} + NX_CLAMAV: {{ .Values.nextcloud.clamav.enabled | quote }} + {{- if .Values.nextcloud.clamav.enabled }} + NX_CLAMAV_HOST: {{ printf "%v-clamav" $fullname }} + NX_CLAMAV_PORT: {{ .Values.service.clamav.ports.clamav.targetPort | quote }} + NX_CLAMAV_STREAM_MAX_LENGTH: {{ .Values.nextcloud.clamav.stream_max_length | mul 1 | quote }} + NX_CLAMAV_FILE_MAX_SIZE: {{ .Values.nextcloud.clamav.file_max_size | quote }} + NX_CLAMAV_INFECTED_ACTION: {{ .Values.nextcloud.clamav.infected_action | quote }} + {{- end }} + + {{/* Collabora */}} + NX_COLLABORA: {{ .Values.nextcloud.collabora.enabled | quote }} + {{- if .Values.nextcloud.collabora.enabled }} + NX_COLLABORA_URL: {{ printf "%v/collabora" $accessUrl | quote }} + # Ideally this would be a combo of: public ip, pod cidr, svc cidr + # But not always people have static IP. + NX_COLLABORA_ALLOWLIST: "0.0.0.0/0" + {{- end }} + + {{/* Only Office */}} + NX_ONLYOFFICE: {{ .Values.nextcloud.onlyoffice.enabled | quote }} + {{- if .Values.nextcloud.onlyoffice.enabled }} + NX_ONLYOFFICE_URL: {{ .Values.nextcloud.onlyoffice.url | quote }} + NX_ONLYOFFICE_INTERNAL_URL: {{ .Values.nextcloud.onlyoffice.internal_url | quote }} + NX_ONLYOFFICE_VERIFY_SSL: {{ .Values.nextcloud.onlyoffice.verify_ssl | quote }} + NX_ONLYOFFICE_NEXTCLOUD_INTERNAL_URL: {{ printf "http://%v.svc.cluster.local:%v" $fqdn .Values.service.main.ports.main.port }} + NX_ONLYOFFICE_JWT: {{ .Values.nextcloud.onlyoffice.jwt | quote }} + NX_ONLYOFFICE_JWT_HEADER: {{ .Values.nextcloud.onlyoffice.jwt_header | quote }} + {{- end }} + + {{/* URLs */}} + NX_OVERWRITE_HOST: {{ $accessHostPort }} + NX_OVERWRITE_CLI_URL: {{ $accessUrl }} + # Return the protocol part of the URL + NX_OVERWRITE_PROTOCOL: {{ $accessProtocol | lower }} + # IP (or range in this case) of the proxy(ies) + NX_TRUSTED_PROXIES: | + {{ .Values.chartContext.podCIDR }} + {{ .Values.chartContext.svcCIDR }} + # fullname-* will allow access from the + # other services in the same namespace + NX_TRUSTED_DOMAINS: | + 127.0.0.1 + localhost + {{ $fullname }} + {{ printf "%v-*" $fullname }} + {{ $healthHost }} + {{- if not (contains "127.0.0.1" $accessHost) }} + {{- $accessHost | nindent 6 }} + {{- end -}} + {{- with .Values.nextcloud.general.accessIP }} + {{- . | nindent 6 }} + {{- end }} + +# TODO: Replace locations with ingress +# like /push, /.well-known/carddav, /.well-known/caldav +# needs some work as nginx converts urls to pretty urls +# before matching them to locations, so ingress needs to +# take that into consideration. +nginx-config: + enabled: true + data: + nginx.conf: | + worker_processes auto; + + error_log /var/log/nginx/error.log warn; + # Set to /tmp so it can run as non-root + pid /tmp/nginx.pid; + + events { + worker_connections 1024; + } + + http { + # Set to /tmp so it can run as non-root + client_body_temp_path /tmp/nginx/client_temp; + proxy_temp_path /tmp/nginx/proxy_temp_path; + fastcgi_temp_path /tmp/nginx/fastcgi_temp; + uwsgi_temp_path /tmp/nginx/uwsgi_temp; + scgi_temp_path /tmp/nginx/scgi_temp; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + # Prevent nginx HTTP Server Detection + server_tokens off; + + keepalive_timeout 65; + + #gzip on; + + upstream php-handler { + server {{ printf "%v-nextcloud" $fullname }}:{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}; + } + + server { + listen {{ .Values.service.main.ports.main.port }}; + absolute_redirect off; + + {{- if .Values.nextcloud.notify_push.enabled }} + # Forward Notify_Push "High Performance Backend" to it's own container + location ^~ /push/ { + # The trailing "/" is important! + proxy_pass http://{{ printf "%v-notify" $fullname }}:{{ .Values.service.notify.ports.notify.targetPort }}/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + {{- end }} + + # HSTS settings + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + + # Set max upload size + client_max_body_size {{ .Values.nextcloud.php.upload_limit | default "512M" }}; + fastcgi_buffers 64 4K; + + # Enable gzip but do not remove ETag headers + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + # Pagespeed is not supported by Nextcloud, so if your server is built + # with the `ngx_pagespeed` module, uncomment this line to disable it. + #pagespeed off; + + include mime.types; + types { + text/javascript js mjs; + } + + # HTTP response headers borrowed from Nextcloud `.htaccess` + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "noindex, nofollow" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + # Path to the root of your installation + root {{ .Values.persistence.html.targetSelector.nginx.nginx.mountPath }}; + + # Specify how to handle directories -- specifying `/index.php$request_uri` + # here as the fallback means that Nginx always exhibits the desired behaviour + # when a client requests a path that corresponds to a directory that exists + # on the server. In particular, if that directory contains an index.php file, + # that file is correctly served; if it doesn't, then the request is passed to + # the front-end controller. This consistent behaviour means that we don't need + # to specify custom rules for certain paths (e.g. images and other assets, + # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus + # `try_files $uri $uri/ /index.php$request_uri` + # always provides the desired behaviour. + index index.php index.html /index.php$request_uri; + + # Rule borrowed from `.htaccess` to handle Microsoft DAV clients + location = / { + if ( $http_user_agent ~ ^DavClnt ) { + return 302 /remote.php/webdav/$is_args$args; + } + } + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + # Make a regex exception for `/.well-known` so that clients can still + # access it despite the existence of the regex rule + # `location ~ /(\.|autotest|...)` which would otherwise handle requests + # for `/.well-known`. + location ^~ /.well-known { + # The rules in this block are an adaptation of the rules + # in `.htaccess` that concern `/.well-known`. + + location = /.well-known/carddav { return 301 /remote.php/dav/; } + location = /.well-known/caldav { return 301 /remote.php/dav/; } + + location /.well-known/acme-challenge { try_files $uri $uri/ =404; } + location /.well-known/pki-validation { try_files $uri $uri/ =404; } + + # Let Nextcloud's API for `/.well-known` URIs handle all other + # requests by passing them to the front-end controller. + return 301 /index.php$request_uri; + } + + # Rules borrowed from `.htaccess` to hide certain paths from clients + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } + + # Ensure this block, which passes PHP files to the PHP process, is above the blocks + # which handle static assets (as seen below). If this block is not declared first, + # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` + # to the URI, resulting in a HTTP 500 error response. + location ~ \.php(?:$|/) { + # Required for legacy support + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; + + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + set $path_info $fastcgi_path_info; + + try_files $fastcgi_script_name =404; + + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + #fastcgi_param HTTPS on; + + fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice + fastcgi_param front_controller_active true; # Enable pretty urls + fastcgi_pass php-handler; + + fastcgi_intercept_errors on; + fastcgi_request_buffering off; + proxy_send_timeout 3600s; + proxy_read_timeout 3600s; + fastcgi_send_timeout 3600s; + fastcgi_read_timeout 3600s; + } + + location ~ \.(?:css|js|svg|gif)$ { + try_files $uri /index.php$request_uri; + expires 6M; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + location ~ \.woff2?$ { + try_files $uri /index.php$request_uri; + expires 7d; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + # Rule borrowed from `.htaccess` + location /remote { + return 301 /remote.php$request_uri; + } + + location / { + try_files $uri $uri/ /index.php$request_uri; + } + } + } +{{- end -}} diff --git a/stable/nextcloud/27.0.1/templates/_cronjobs.tpl b/stable/nextcloud/27.0.1/templates/_cronjobs.tpl new file mode 100644 index 00000000000..0fa050dba68 --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/_cronjobs.tpl @@ -0,0 +1,34 @@ +{{- define "nextcloud.cronjobs" -}} +{{- range $cj := .Values.cronjobs }} + {{- $name := $cj.name | required "Nextcloud - Expected non-empty name in cronjob" -}} + {{- $schedule := $cj.schedule | required "Nextcloud - Expected non-empty schedule in cronjob" }} + +{{ $name }}: + enabled: {{ $cj.enabled | quote }} + type: CronJob + schedule: {{ $schedule | quote }} + podSpec: + restartPolicy: Never + containers: + {{ $name }}: + enabled: true + primary: true + imageSelector: image + command: + - /bin/bash + - -c + - | + {{- range $cj.cmd }} + {{- . | nindent 12 }} + {{- else -}} + {{- fail "Nextcloud - Expected non-empty cmd in cronjob" -}} + {{- end }} + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +{{- end }} +{{- end -}} diff --git a/stable/nextcloud/27.0.1/templates/_ingressInjector.tpl b/stable/nextcloud/27.0.1/templates/_ingressInjector.tpl new file mode 100644 index 00000000000..12960bd28da --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/_ingressInjector.tpl @@ -0,0 +1,24 @@ +{{- define "nextcloud.ingressInjector" -}} + {{- if .Values.ingress.main.enabled -}} + {{- $injectPaths := list -}} + {{- if .Values.nextcloud.collabora.enabled -}} + {{- $injectPaths = mustAppend $injectPaths (include "nextcloud.collabora.ingress" $ | fromYaml) -}} + {{- end -}} + {{/* Append more paths here if needed */}} + + {{- range $host := .Values.ingress.main.hosts -}} + {{- $paths := $host.paths -}} + {{- $paths = concat $paths $injectPaths -}} + {{- $_ := set $host "paths" $paths -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "nextcloud.collabora.ingress" -}} +{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" . }} +path: /collabora/ +pathType: Prefix +overrideService: + name: {{ printf "%v-collabora" $fullname }} + port: {{ .Values.service.collabora.ports.collabora.port }} +{{- end -}} diff --git a/stable/nextcloud/27.0.1/templates/_initPerms.tpl b/stable/nextcloud/27.0.1/templates/_initPerms.tpl new file mode 100644 index 00000000000..ed94790ad93 --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/_initPerms.tpl @@ -0,0 +1,29 @@ +{{- define "nextcloud.init.perms" -}} +{{- $uid := .Values.securityContext.container.runAsUser -}} +{{- $gid := .Values.securityContext.container.runAsGroup -}} +{{- $path := .Values.persistence.data.targetSelector.main.main.mountPath }} +enabled: true +type: install +imageSelector: alpineImage +securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + capabilities: + disableS6Caps: true + add: + - DAC_OVERRIDE + - FOWNER + - CHOWN +command: /bin/sh +args: + - -c + - | + echo "Setting permissions to 700 on data directory [{{ $path }}] ..." + chmod 770 {{ $path }} | echo "Failed to set permissions on data directory [{{ $path }}]" + + echo "Setting ownership to {{ $uid }}:{{ $gid }} on data directory [{{ $path }}] ..." + chown {{ $uid }}:{{ $gid }} {{ $path }} | echo "Failed to set ownership on data directory [{{ $path }}]" + + echo "Finished." +{{- end -}} diff --git a/stable/nextcloud/27.0.1/templates/_validation.tpl b/stable/nextcloud/27.0.1/templates/_validation.tpl new file mode 100644 index 00000000000..5650c0f63fe --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/_validation.tpl @@ -0,0 +1,42 @@ +{{- define "nextcloud.validation" -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.memory_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.memory_limit) -}} + {{- end -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.upload_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.upload_limit) -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.previews.providers (uniq .Values.nextcloud.previews.providers)) -}} + {{- fail (printf "Nextcloud - Expected preview providers to be unique but got [%v]" .Values.nextcloud.previews.providers) -}} + {{- end -}} + + {{- if and .Values.nextcloud.collabora.enabled .Values.nextcloud.onlyoffice.enabled -}} + {{- fail "Nextcloud - Expected only one of [Collabora, OnlyOffice] to be enabled" -}} + {{- end -}} + + {{- if contains "$" .Values.nextcloud.collabora.password -}} + {{- fail "Nextcloud - Collabora [Password] cannot contain [$]" -}} + {{- end -}} + + {{- if .Values.nextcloud.collabora.enabled -}} + {{- if lt (len .Values.nextcloud.collabora.password) 8 -}} + {{- fail "Nextcloud - Collabora [Password] must be at least 8 characters" -}} + {{- end -}} + + {{- $collaboraUIModes := (list "default" "compact" "tabbed") -}} + {{- if not (mustHas .Values.nextcloud.collabora.interface_mode $collaboraUIModes) -}} + {{- fail (printf "Nextcloud - Expected [Interface Mode] in Collabora to be one of [%v], but got [%v]" (join "," $collaboraUIModes) .Values.nextcloud.collabora.interface_mode) -}} + {{- end -}} + + {{- if not .Values.nextcloud.collabora.dictionaries -}} + {{- fail "Nextcloud - Expected non-empty Collabora [Dictionaries]" -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.collabora.dictionaries (uniq .Values.nextcloud.collabora.dictionaries)) -}} + {{- fail "Nextcloud - Collabora [Dictionaries] must be unique" -}} + {{- end -}} + {{- end -}} + +{{- end -}} diff --git a/stable/nextcloud/27.0.1/templates/_waitNextcloud.tpl b/stable/nextcloud/27.0.1/templates/_waitNextcloud.tpl new file mode 100644 index 00000000000..24946d640e8 --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/_waitNextcloud.tpl @@ -0,0 +1,25 @@ +{{- define "nextcloud.wait.nextcloud" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $ncURL := printf "%v-nextcloud:%v" $fullname .Values.service.nextcloud.ports.nextcloud.targetPort }} +enabled: true +type: init +imageSelector: image +securityContext: +command: /bin/sh +args: + - -c + - | + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + until \ + REQUEST_METHOD="GET" \ + SCRIPT_NAME="status.php" \ + SCRIPT_FILENAME="status.php" \ + cgi-fcgi -bind -connect "{{ $ncURL }}" | grep -q '"installed":true'; + do + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + sleep 3 + done + + echo "Nextcloud is ready and installed..." + echo "Starting Nginx..." +{{- end -}} diff --git a/stable/nextcloud/27.0.1/templates/common.yaml b/stable/nextcloud/27.0.1/templates/common.yaml new file mode 100644 index 00000000000..d7576a0fb57 --- /dev/null +++ b/stable/nextcloud/27.0.1/templates/common.yaml @@ -0,0 +1,92 @@ +{{- $selector := dict -}} +{{- range $name := (list "main" "nextcloud-cron" "preview-cron") -}} + {{/* creates main: {} */}} + {{- $_ := set $selector $name dict -}} + {{/* sets main: {} to main: { main: {} } */}} + {{- $_ := set (get $selector $name) $name dict -}} +{{- end -}} + +{{- range $item := .Values.persistenceList -}} + {{- $_ := set $item "targetSelector" $selector -}} +{{- end -}} + +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . -}} + +{{- include "nextcloud.validation" $ -}} + +{{/* Render configmaps for all pods */}} +{{- $configmaps := include "nextcloud.configmaps" . | fromYaml -}} +{{- if $configmaps -}} + {{- $_ := mustMergeOverwrite .Values.configmap $configmaps -}} +{{- end -}} + +{{/* Create hostAliases (resolve ingress host to Node/LB IP) */}} +{{- $hostAlias := (list (dict + "ip" .Values.nextcloud.general.accessIP + "hostnames" ( + list (include "nextcloud.accesshost" $) + ) + )) -}} + +{{/* Add [hostAliases] to nextcloud and collabora pod */}} +{{- $_ := set .Values.workload.main.podSpec "hostAliases" $hostAlias -}} +{{- $_ := set .Values.workload.collabora.podSpec "hostAliases" $hostAlias -}} + +{{/* Add [init perms] container to nextcloud */}} +{{- if not (get .Values.workload.main.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.main.podSpec "initContainers" dict -}} +{{- end -}} + +{{- $initPerms := (include "nextcloud.init.perms" . | fromYaml) -}} +{{- $_ := set .Values.workload.main.podSpec.initContainers "init-perms" $initPerms -}} + +{{/* Add [wait nextcloud] container to nginx */}} +{{- if not (get .Values.workload.nginx.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.nginx.podSpec "initContainers" dict -}} +{{- end -}} +{{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} +{{- $_ := set .Values.workload.nginx.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} + +{{/* Disable [notify push] if requested */}} +{{- if not .Values.nextcloud.notify_push.enabled -}} + {{- $_ := set .Values.workload.notify "enabled" false -}} + {{- $_ := set .Values.service.notify "enabled" false -}} +{{- else -}} + {{/* Add [wait nextcloud] container to notify push */}} + {{- if not (get .Values.workload.notify.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.notify.podSpec "initContainers" dict -}} + {{- end -}} + {{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} + {{- $_ := set .Values.workload.notify.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} +{{- end -}} + +{{/* Disable [clamav] if requested */}} +{{- if not .Values.nextcloud.clamav.enabled -}} + {{- $_ := set .Values.workload.clamav "enabled" false -}} + {{- $_ := set .Values.service.clamav "enabled" false -}} +{{- end -}} + +{{/* Disable [previews] if requested */}} +{{- if or (not .Values.nextcloud.previews.imaginary) (not .Values.nextcloud.previews.enabled) -}} + {{- $_ := set .Values.workload.imaginary "enabled" false -}} + {{- $_ := set .Values.service.imaginary "enabled" false -}} +{{- end -}} + +{{/* Disable [collabora] if requested */}} +{{- if not .Values.nextcloud.collabora.enabled -}} + {{- $_ := set .Values.workload.collabora "enabled" false -}} + {{- $_ := set .Values.service.collabora "enabled" false -}} +{{- end -}} + +{{/* Create [cronjobs] defined */}} +{{- $cronjobs := include "nextcloud.cronjobs" . | fromYaml -}} +{{- if $cronjobs -}} + {{- $_ := mustMergeOverwrite .Values.workload $cronjobs -}} +{{- end -}} + +{{/* TODO: Do we have to cleanup when something (eg Collabora) is disabled? */}} +{{- include "nextcloud.ingressInjector" $ -}} + +{{/* Render the templates */}} +{{- include "tc.v1.common.loader.apply" . -}} diff --git a/stable/nextcloud/27.0.1/values.yaml b/stable/nextcloud/27.0.1/values.yaml new file mode 100644 index 00000000000..e69de29bb2d