From d986d3d79e5c07d200e056a85097a5885f71606a Mon Sep 17 00:00:00 2001 From: Kjeld Schouten-Lebbing Date: Sun, 25 Sep 2022 00:11:44 +0200 Subject: [PATCH] Delete enterprise/vaultwarden directory --- enterprise/vaultwarden/16.0.37/CHANGELOG.md | 99 - enterprise/vaultwarden/16.0.37/Chart.lock | 9 - enterprise/vaultwarden/16.0.37/Chart.yaml | 37 - enterprise/vaultwarden/16.0.37/README.md | 107 - enterprise/vaultwarden/16.0.37/app-readme.md | 8 - .../16.0.37/charts/common-10.5.9.tgz | Bin 48353 -> 0 bytes .../16.0.37/charts/postgresql-8.0.75.tgz | Bin 59322 -> 0 bytes .../16.0.37/ci/default-values.yaml | 0 .../16.0.37/ci/ingress-values.yaml | 7 - enterprise/vaultwarden/16.0.37/ix_values.yaml | 159 - enterprise/vaultwarden/16.0.37/questions.yaml | 2834 ---------------- .../16.0.37/templates/_configmap.tpl | 116 - .../16.0.37/templates/_secrets.tpl | 36 - .../16.0.37/templates/_validate.tpl | 17 - .../vaultwarden/16.0.37/templates/common.yaml | 39 - enterprise/vaultwarden/16.0.37/values.yaml | 0 enterprise/vaultwarden/17.0.0/CHANGELOG.md | 99 - enterprise/vaultwarden/17.0.0/Chart.lock | 9 - enterprise/vaultwarden/17.0.0/Chart.yaml | 37 - enterprise/vaultwarden/17.0.0/README.md | 107 - enterprise/vaultwarden/17.0.0/app-readme.md | 8 - .../17.0.0/charts/common-10.6.0.tgz | Bin 48413 -> 0 bytes .../17.0.0/charts/postgresql-8.0.78.tgz | Bin 51868 -> 0 bytes .../vaultwarden/17.0.0/ci/default-values.yaml | 0 .../vaultwarden/17.0.0/ci/ingress-values.yaml | 7 - enterprise/vaultwarden/17.0.0/ix_values.yaml | 159 - enterprise/vaultwarden/17.0.0/questions.yaml | 2980 ----------------- .../17.0.0/templates/_configmap.tpl | 116 - .../vaultwarden/17.0.0/templates/_secrets.tpl | 36 - .../17.0.0/templates/_validate.tpl | 17 - .../vaultwarden/17.0.0/templates/common.yaml | 39 - enterprise/vaultwarden/17.0.0/values.yaml | 0 enterprise/vaultwarden/item.yaml | 4 - 33 files changed, 7086 deletions(-) delete mode 100644 enterprise/vaultwarden/16.0.37/CHANGELOG.md delete mode 100644 enterprise/vaultwarden/16.0.37/Chart.lock delete mode 100644 enterprise/vaultwarden/16.0.37/Chart.yaml delete mode 100644 enterprise/vaultwarden/16.0.37/README.md delete mode 100644 enterprise/vaultwarden/16.0.37/app-readme.md delete mode 100644 enterprise/vaultwarden/16.0.37/charts/common-10.5.9.tgz delete mode 100644 enterprise/vaultwarden/16.0.37/charts/postgresql-8.0.75.tgz delete mode 100644 enterprise/vaultwarden/16.0.37/ci/default-values.yaml delete mode 100644 enterprise/vaultwarden/16.0.37/ci/ingress-values.yaml delete mode 100644 enterprise/vaultwarden/16.0.37/ix_values.yaml delete mode 100644 enterprise/vaultwarden/16.0.37/questions.yaml delete mode 100644 enterprise/vaultwarden/16.0.37/templates/_configmap.tpl delete mode 100644 enterprise/vaultwarden/16.0.37/templates/_secrets.tpl delete mode 100644 enterprise/vaultwarden/16.0.37/templates/_validate.tpl delete mode 100644 enterprise/vaultwarden/16.0.37/templates/common.yaml delete mode 100644 enterprise/vaultwarden/16.0.37/values.yaml delete mode 100644 enterprise/vaultwarden/17.0.0/CHANGELOG.md delete mode 100644 enterprise/vaultwarden/17.0.0/Chart.lock delete mode 100644 enterprise/vaultwarden/17.0.0/Chart.yaml delete mode 100644 enterprise/vaultwarden/17.0.0/README.md delete mode 100644 enterprise/vaultwarden/17.0.0/app-readme.md delete mode 100644 enterprise/vaultwarden/17.0.0/charts/common-10.6.0.tgz delete mode 100644 enterprise/vaultwarden/17.0.0/charts/postgresql-8.0.78.tgz delete mode 100644 enterprise/vaultwarden/17.0.0/ci/default-values.yaml delete mode 100644 enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml delete mode 100644 enterprise/vaultwarden/17.0.0/ix_values.yaml delete mode 100644 enterprise/vaultwarden/17.0.0/questions.yaml delete mode 100644 enterprise/vaultwarden/17.0.0/templates/_configmap.tpl delete mode 100644 enterprise/vaultwarden/17.0.0/templates/_secrets.tpl delete mode 100644 enterprise/vaultwarden/17.0.0/templates/_validate.tpl delete mode 100644 enterprise/vaultwarden/17.0.0/templates/common.yaml delete mode 100644 enterprise/vaultwarden/17.0.0/values.yaml delete mode 100644 enterprise/vaultwarden/item.yaml diff --git a/enterprise/vaultwarden/16.0.37/CHANGELOG.md b/enterprise/vaultwarden/16.0.37/CHANGELOG.md deleted file mode 100644 index 8a30d6b7ba3..00000000000 --- a/enterprise/vaultwarden/16.0.37/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - - -## [vaultwarden-16.0.37](https://github.com/truecharts/charts/compare/vaultwarden-16.0.39...vaultwarden-16.0.37) (2022-09-24) - -### Chore - -- Add a copy of Initial Apps selected for Enterprise Train ([#3749](https://github.com/truecharts/charts/issues/3749)) - - - - -## [vaultwarden-16.0.37](https://github.com/truecharts/charts/compare/vaultwarden-16.0.36...vaultwarden-16.0.37) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - - - - -## [vaultwarden-16.0.37](https://github.com/truecharts/charts/compare/vaultwarden-16.0.36...vaultwarden-16.0.37) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] - - update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - - - - -## [vaultwarden-16.0.37](https://github.com/truecharts/charts/compare/vaultwarden-16.0.36...vaultwarden-16.0.37) (2022-09-11) - -### Chore - -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - - - - -## [vaultwarden-16.0.36](https://github.com/truecharts/charts/compare/vaultwarden-16.0.34...vaultwarden-16.0.36) (2022-08-30) - -### Chore - -- Auto-update chart README [skip ci] - - update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) - - update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - - - - -## [vaultwarden-16.0.35](https://github.com/truecharts/charts/compare/vaultwarden-16.0.34...vaultwarden-16.0.35) (2022-08-30) - -### Chore - -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - - - - -## [vaultwarden-16.0.34](https://github.com/truecharts/charts/compare/vaultwarden-16.0.32...vaultwarden-16.0.34) (2022-08-29) - -### Chore - -- update helm general non-major ([#3621](https://github.com/truecharts/charts/issues/3621)) - - update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) - - - - -## [vaultwarden-16.0.32](https://github.com/truecharts/charts/compare/vaultwarden-16.0.31...vaultwarden-16.0.32) (2022-08-23) - -### Chore - -- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) - - - - -## [vaultwarden-16.0.31](https://github.com/truecharts/charts/compare/vaultwarden-16.0.30...vaultwarden-16.0.31) (2022-08-17) - -### Chore - -- update helm general non-major helm releases ([#3484](https://github.com/truecharts/charts/issues/3484)) - - - - -## [vaultwarden-16.0.30](https://github.com/truecharts/charts/compare/vaultwarden-16.0.29...vaultwarden-16.0.30) (2022-08-12) - -### Chore - -- add documentation checkbox/section to all SCALE Apps - - update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456)) - - ### Fix diff --git a/enterprise/vaultwarden/16.0.37/Chart.lock b/enterprise/vaultwarden/16.0.37/Chart.lock deleted file mode 100644 index d922aa03392..00000000000 --- a/enterprise/vaultwarden/16.0.37/Chart.lock +++ /dev/null @@ -1,9 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.5.9 -- name: postgresql - repository: https://charts.truecharts.org/ - version: 8.0.75 -digest: sha256:85a7386bd4120271d745576b43b1da2bb13765de1310fcef8100641023c432dc -generated: "2022-09-24T19:13:34.068845443Z" diff --git a/enterprise/vaultwarden/16.0.37/Chart.yaml b/enterprise/vaultwarden/16.0.37/Chart.yaml deleted file mode 100644 index 4e5548e956f..00000000000 --- a/enterprise/vaultwarden/16.0.37/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: v2 -appVersion: "1.25.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 10.5.9 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 8.0.75 -deprecated: false -description: Unofficial Bitwarden compatible server written in Rust -home: https://truecharts.org/docs/charts/enterprise/vaultwarden -icon: https://truecharts.org/img/hotlink-ok/chart-icons/vaultwarden.png -keywords: - - bitwarden - - bitwardenrs - - bitwarden_rs - - vaultwarden - - password - - rust -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: vaultwarden -sources: - - https://github.com/truecharts/charts/tree/master/charts/enterprise/vaultwarden - - https://github.com/dani-garcia/vaultwarden -type: application -version: 16.0.37 -annotations: - truecharts.org/catagories: | - - security - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/enterprise/vaultwarden/16.0.37/README.md b/enterprise/vaultwarden/16.0.37/README.md deleted file mode 100644 index 84214038ad5..00000000000 --- a/enterprise/vaultwarden/16.0.37/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# vaultwarden - -Unofficial Bitwarden compatible server written in Rust - -TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. - -This readme is just an automatically generated general guide on installing our Helm Charts and Apps. -For more information, please click here: [vaultwarden](https://truecharts.org/docs/charts/enterprise/vaultwarden) - -**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)** - -## Source Code - -* -* - -## Requirements - -Kubernetes: `>=1.16.0-0` - -## Dependencies - -| Repository | Name | Version | -|------------|------|---------| -| https://charts.truecharts.org/ | postgresql | 8.0.75 | -| https://library-charts.truecharts.org | common | 10.5.9 | - -## Installing the Chart - -### TrueNAS SCALE - -To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). - -### Helm - -To install the chart with the release name `vaultwarden` - -```console -helm repo add TrueCharts https://charts.truecharts.org -helm repo update -helm install vaultwarden TrueCharts/vaultwarden -``` - -## Uninstall - -### TrueNAS SCALE - -**Upgrading, Rolling Back and Uninstalling the Chart** - -To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). - -### Helm - -To uninstall the `vaultwarden` deployment - -```console -helm uninstall vaultwarden -``` - -## Configuration - -### Helm - -#### Available Settings - -Read through the values.yaml file. It has several commented out suggested values. -Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). - -#### Configure using the command line - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -```console -helm install vaultwarden \ - --set env.TZ="America/New York" \ - TrueCharts/vaultwarden -``` - -#### Configure using a yaml file - -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. - -```console -helm install vaultwarden TrueCharts/vaultwarden -f values.yaml -``` - -#### Connecting to other charts - -If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. - -## Support - -- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/apps/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/enterprise/vaultwarden/16.0.37/app-readme.md b/enterprise/vaultwarden/16.0.37/app-readme.md deleted file mode 100644 index 037aa691afc..00000000000 --- a/enterprise/vaultwarden/16.0.37/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Unofficial Bitwarden compatible server written in Rust - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/enterprise/vaultwarden](https://truecharts.org/docs/charts/enterprise/vaultwarden) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/vaultwarden/16.0.37/charts/common-10.5.9.tgz b/enterprise/vaultwarden/16.0.37/charts/common-10.5.9.tgz deleted file mode 100644 index 006c19d595cac9c9cf1a1e729f866d0f5f70d49c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48353 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 diff --git a/enterprise/vaultwarden/16.0.37/ci/default-values.yaml b/enterprise/vaultwarden/16.0.37/ci/default-values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/enterprise/vaultwarden/16.0.37/ci/ingress-values.yaml b/enterprise/vaultwarden/16.0.37/ci/ingress-values.yaml deleted file mode 100644 index 961f466bd75..00000000000 --- a/enterprise/vaultwarden/16.0.37/ci/ingress-values.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# -- Configure the ingresses for the chart here. -# Additional ingresses can be added by adding a dictionary key similar to the 'main' ingress. -# @default -- See below -ingress: - main: - # -- Enables or disables the ingress - enabled: true diff --git a/enterprise/vaultwarden/16.0.37/ix_values.yaml b/enterprise/vaultwarden/16.0.37/ix_values.yaml deleted file mode 100644 index 66fcab86267..00000000000 --- a/enterprise/vaultwarden/16.0.37/ix_values.yaml +++ /dev/null @@ -1,159 +0,0 @@ -image: - repository: tccr.io/truecharts/vaultwarden - pullPolicy: IfNotPresent - tag: 1.25.2@sha256:ec34588ef04cfdf79cdbb0f90882b3073d8baa39d9aaf8aa86abbb263049f8eb - -service: - main: - ports: - main: - port: 10102 - targetPort: 8080 - ws: - enabled: true - ports: - ws: - enabled: true - port: 3012 - targetPort: 3012 - -env: - DOMAIN: "https://{{ if .Values.ingress }}{{ if .Values.ingress.main.enabled }}{{ ( index .Values.ingress.main.hosts 0 ).host }}{{ else }}placeholder.com{{ end }}{{ else }}placeholder.com{{ end }}" - DATABASE_URL: - secretKeyRef: - name: dbcreds - key: url - -envFrom: - - configMapRef: - name: vaultwardenconfig - - secretRef: - name: vaultwardensecret - -database: - # -- Database type, - # must be one of: 'sqlite', 'mysql' or 'postgresql'. - type: postgresql - # -- Enable DB Write-Ahead-Log for SQLite, - # disabled for other databases. https://github.com/dani-garcia/bitwarden_rs/wiki/Running-without-WAL-enabled - wal: true - ## URL for external databases (mysql://user:pass@host:port or postgresql://user:pass@host:port). - # url: "" - ## Set the size of the database connection pool. - # maxConnections: 10 - ## Connection retries during startup, 0 for infinite. 1 second between retries. - # retries: 15 - -# Set Bitwarden_rs application variables -vaultwarden: - # -- Allow any user to sign-up - # see: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-registration-of-new-users - allowSignups: true - ## Whitelist domains allowed to sign-up. 'allowSignups' is ignored if set. - # signupDomains: - # - domain.tld - # -- Verify e-mail before login is enabled. - # SMTP must be enabled. - verifySignup: false - # When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled. - requireEmail: false - ## Maximum attempts before an email token is reset and a new email will need to be sent. - # emailAttempts: 3 - ## Email token validity in seconds. - # emailTokenExpiration: 600 - # Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-invitations - allowInvitation: true - # Show password hints: https://github.com/dani-garcia/bitwarden_rs/wiki/Password-hint-display - ## Default organization name in invitation e-mails that are not coming from a specific organization. - # defaultInviteName: "" - showPasswordHint: true - # Enable Websockets for notification. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-WebSocket-notifications - # Redirect HTTP path "/notifications/hub" to port 3012. Ingress/IngressRoute controllers are automatically configured. - enableWebsockets: true - # Enable Web Vault (static content). https://github.com/dani-garcia/bitwarden_rs/wiki/Disabling-or-overriding-the-Vault-interface-hosting - enableWebVault: true - # Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users. - orgCreationUsers: all - ## Limit attachment disk usage per organization. - # attachmentLimitOrg: - ## Limit attachment disk usage per user. - # attachmentLimitUser: - ## HaveIBeenPwned API Key. Can be purchased at https://haveibeenpwned.com/API/Key. - # hibpApiKey: - - admin: - # Enable admin portal. - enabled: false - # Disabling the admin token will make the admin portal accessible to anyone, use carefully: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-admin-token - disableAdminToken: false - ## Token for admin login, will be generated if not defined. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-admin-page - # token: - - # Enable SMTP. https://github.com/dani-garcia/bitwarden_rs/wiki/SMTP-configuration - smtp: - enabled: false - # SMTP hostname, required if SMTP is enabled. - host: "" - # SMTP sender e-mail address, required if SMTP is enabled. - from: "" - ## SMTP sender name, defaults to 'Bitwarden_RS'. - # fromName: "" - ## Enable SSL connection. - # ssl: true - ## SMTP port. Defaults to 25 without SSL, 587 with SSL. - # port: 587 - ## SMTP Authentication Mechanisms. Comma-separated options: 'Plain', 'Login' and 'Xoauth2'. Defaults to 'Plain'. - # authMechanism: Plain - ## Hostname to be sent for SMTP HELO. Defaults to pod name. - # heloName: "" - ## SMTP timeout. - # timeout: 15 - ## Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks! - # invalidHostname: false - ## Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks! - # invalidCertificate: false - ## SMTP username. - # user: "" - ## SMTP password. Required is user is specified, ignored if no user provided. - # password: "" - - ## Enable Yubico OTP authentication. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-Yubikey-OTP-authentication - yubico: - enabled: false - ## Yubico server. Defaults to YubiCloud. - # server: - ## Yubico ID and Secret Key. - # clientId: - # secretKey: - - ## Logging options. https://github.com/dani-garcia/bitwarden_rs/wiki/Logging - log: - # Log to file. - file: "" - # Log level. Options are "trace", "debug", "info", "warn", "error" or "off". - level: "trace" - ## Log timestamp format. See https://docs.rs/chrono/0.4.15/chrono/format/strftime/index.html. Defaults to time in milliseconds. - # timeFormat: "" - - icons: - # Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache). TTL will default to zero. - disableDownload: false - ## Cache time-to-live for icons fetched. 0 means no purging. - # cache: 2592000 - ## Cache time-to-live for icons that were not available. 0 means no purging. - # cacheFailed: 259200 - -persistence: - data: - enabled: true - mountPath: "/data" - -# Enabled postgres -postgresql: - enabled: true - existingSecret: "dbcreds" - postgresqlUsername: vaultwarden - postgresqlDatabase: vaultwarden - -portal: - enabled: true diff --git a/enterprise/vaultwarden/16.0.37/questions.yaml b/enterprise/vaultwarden/16.0.37/questions.yaml deleted file mode 100644 index dd726a64692..00000000000 --- a/enterprise/vaultwarden/16.0.37/questions.yaml +++ /dev/null @@ -1,2834 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: Controller - description: Configure Workload Deployment - - name: Container Configuration - description: Additional Container Configuration - - 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: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - admin: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "/admin/" -questions: - - variable: global - label: Global Settings - group: Controller - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: Controller - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: advanced - label: Show Advanced Controller Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: type - description: Please specify type of workload to deploy - label: (Advanced) Controller Type - schema: - type: string - required: true - enum: - - value: deployment - description: Deployment - - value: statefulset - description: Statefulset - - value: daemonset - description: Daemonset - default: deployment - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: strategy - description: Please specify type of workload to deploy - label: (Advanced) Update Strategy - schema: - type: string - required: true - enum: - - value: Recreate - description: "Recreate: Kill existing pods before creating new ones" - - value: RollingUpdate - description: "RollingUpdate: Create new pods and then kill old ones" - - value: OnDelete - description: "(Legacy) OnDelete: ignore .spec.template changes" - default: Recreate - - variable: expert - label: Show Expert Configuration Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: labelsList - label: Controller Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Controller Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: customextraargs - group: Controller - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: Container Configuration - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - 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..." - group: Container Configuration - 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: expertpodconf - group: Container Configuration - label: Show Expert Configuration - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: tty - label: Enable TTY - description: Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled. - group: Workload Details - schema: - type: boolean - default: false - - variable: stdin - label: Enable STDIN - description: Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled. - group: Workload Details - schema: - type: boolean - default: false - - variable: termination - group: Container Configuration - label: Termination settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: gracePeriodSeconds - label: Grace Period Seconds - schema: - type: int - default: 10 - - variable: podLabelsList - group: Container Configuration - label: Pod Labels - schema: - type: list - default: [] - items: - - variable: podLabelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: podAnnotationsList - group: Container Configuration - label: Pod Annotations - schema: - type: list - default: [] - items: - - variable: podAnnotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: vaultwarden - label: "" - group: "App Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: yubico - label: "Yubico OTP authentication" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: "Enable Yubico OTP authentication" - description: "Please refer to the manual at: https://github.com/dani-garcia/vaultwarden/wiki/Enabling-Yubikey-OTP-authentication" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: server - label: "Yubico server" - description: "Defaults to YubiCloud" - schema: - type: string - default: "" - - variable: clientId - label: "Yubico ID" - schema: - type: string - default: "" - - variable: secretKey - label: "Yubico Secret Key" - schema: - type: string - default: "" - - variable: admin - label: "Admin Portal" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: "Enable Admin Portal" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: disableAdminToken - label: "Make Accessible Without Password/Token" - schema: - type: boolean - default: false - - variable: token - label: "Admin Portal Password/Token" - description: "Will be automatically generated if not defined" - schema: - type: string - default: "" - - variable: icons - label: "Icon Download Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: disableDownload - label: "Disable Icon Download" - description: "Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache)" - schema: - type: boolean - default: false - - variable: cache - label: "Cache time-to-live" - description: "Cache time-to-live for icons fetched. 0 means no purging" - schema: - type: int - default: 2592000 - - variable: token - label: "Failed Downloads Cache time-to-live" - description: "Cache time-to-live for icons that were not available. 0 means no purging." - schema: - type: int - default: 2592000 - - variable: log - label: "Logging" - schema: - additional_attrs: true - type: dict - attrs: - - variable: level - label: "Log level" - schema: - type: string - default: "info" - required: true - enum: - - value: "trace" - description: "trace" - - value: "debug" - description: "debug" - - value: "info" - description: "info" - - value: "warn" - description: "warn" - - value: "error" - description: "error" - - value: "off" - description: "off" - - variable: file - label: "Log-File Location" - schema: - type: string - default: "" - - variable: smtp - label: "SMTP Settings (Email)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: "Enable SMTP Support" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: host - label: "SMTP hostname" - schema: - type: string - required: true - default: "" - - variable: from - label: "SMTP sender e-mail address" - schema: - type: string - required: true - default: "" - - variable: fromName - label: "SMTP sender name" - schema: - type: string - required: true - default: "" - - variable: user - label: "SMTP username" - schema: - type: string - required: true - default: "" - - variable: password - label: "SMTP password" - description: "Required is user is specified, ignored if no user provided" - schema: - type: string - default: "" - - variable: ssl - label: "Enable SSL connection" - schema: - type: boolean - default: true - - variable: port - label: "SMTP port" - description: "Usually: 25 without SSL, 587 with SSL" - schema: - type: int - default: 587 - - variable: authMechanism - label: "SMTP Authentication Mechanisms" - description: "Comma-separated options: Plain, Login and Xoauth2" - schema: - type: string - default: "Plain" - - variable: heloName - label: "SMTP HELO - Hostname" - description: "Hostname to be sent for SMTP HELO. Defaults to pod name" - schema: - type: string - default: "" - - variable: timeout - label: "SMTP timeout" - schema: - type: int - default: 15 - - variable: invalidHostname - label: "Accept Invalid Hostname" - description: "Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks!" - schema: - type: boolean - default: false - - variable: invalidCertificate - label: "Accept Invalid Certificate" - description: "Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks!" - schema: - type: boolean - default: false - - variable: allowSignups - label: "Allow Signup" - description: "Allow any user to sign-up: https://github.com/dani-garcia/vaultwarden/wiki/Disable-registration-of-new-users" - schema: - type: boolean - default: true - - variable: allowInvitation - label: "Always allow Invitation" - description: "Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/vaultwarden/wiki/Disable-invitations" - schema: - type: boolean - default: true - - variable: defaultInviteName - label: "Default Invite Organisation Name" - description: "Default organization name in invitation e-mails that are not coming from a specific organization." - schema: - type: string - default: "" - - variable: showPasswordHint - label: "Show password hints" - description: "https://github.com/dani-garcia/vaultwarden/wiki/Password-hint-display" - schema: - type: boolean - default: true - - variable: signupwhitelistenable - label: "Enable Signup Whitelist" - description: "allowSignups is ignored if set" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: signupDomains - label: "Signup Whitelist Domains" - schema: - type: list - default: [] - items: - - variable: domain - label: "Domain" - schema: - type: string - default: "" - - variable: verifySignup - label: "Verifiy Signup" - description: "Verify e-mail before login is enabled. SMTP must be enabled" - schema: - type: boolean - default: false - - variable: requireEmail - label: "Block Login if email fails" - description: "When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled" - schema: - type: boolean - default: false - - variable: emailAttempts - label: "Email token reset attempts" - description: "Maximum attempts before an email token is reset and a new email will need to be sent" - schema: - type: int - default: 3 - - variable: emailTokenExpiration - label: "Email token validity in seconds" - schema: - type: int - default: 600 - - variable: enableWebVault - label: "Enable Webvault" - description: "Enable Web Vault (static content). https://github.com/dani-garcia/vaultwarden/wiki/Disabling-or-overriding-the-Vault-interface-hosting" - schema: - type: boolean - default: true - - variable: orgCreationUsers - label: "Limit Organisation Creation to (users)" - description: "Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users." - schema: - type: string - default: "all" - - variable: attachmentLimitOrg - label: "Limit Attachment Disk Usage per Organisation" - schema: - type: string - default: "" - - variable: attachmentLimitUser - label: "Limit Attachment Disk Usage per User" - schema: - type: string - default: "" - - variable: hibpApiKey - label: "HaveIBeenPwned API Key" - description: "Can be purchased at https://haveibeenpwned.com/API/Key" - schema: - type: string - default: "" - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: -# Include{serviceSelector} - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10102 - required: true - - variable: advanced - label: Show Advanced Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enable the Port - schema: - type: boolean - hidden: true - default: true - - variable: protocol - label: Port Type - schema: - type: string - default: HTTP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: nodePort - label: Node Port (Optional) - description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer - schema: - type: int - min: 9000 - max: 65535 - - variable: targetPort - label: "Target Port" - description: "The internal(!) port on the container the Application runs on" - schema: - type: int - default: 8080 - - variable: ws - label: "WebSocket Service" - description: "WebSocket Service" - schema: - additional_attrs: true - type: dict - attrs: -# Include{serviceSelector} - - variable: ws - label: "WebSocket Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3012 - required: true - - variable: advanced - label: Show Advanced Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enable the Port - schema: - type: boolean - hidden: true - default: true - - variable: protocol - label: Port Type - schema: - type: string - default: HTTP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: nodePort - label: Node Port (Optional) - description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer - schema: - type: int - min: 9000 - max: 65535 - - variable: targetPort - label: "Target Port" - description: "The internal(!) port on the container the Application runs on" - schema: - type: int - default: 3012 - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: dnsPolicy - group: Networking and Services - label: dnsPolicy - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ClusterFirst - description: ClusterFirst - - value: ClusterFirstWithHostNet - description: ClusterFirstWithHostNet - - value: None - description: None - - variable: dnsConfig - label: DNS Configuration - group: Networking and Services - description: Specify custom DNS configuration which will be applied to the pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: nameservers - label: Name Servers - schema: - default: [] - type: list - items: - - variable: nameserver - label: Name Server - schema: - type: string - - variable: options - label: Options - schema: - default: [] - type: list - items: - - variable: option - label: Option Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: searches - label: Searches - schema: - default: [] - type: list - items: - - variable: search - label: Search Entry - schema: - type: string - - 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: data - label: "App Config Storage" - description: "Stores the Application Configuration." - 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: simplePVC - enum: - - value: simplePVC - description: PVC (simple) - - value: simpleHP - description: Host Path (simple) - - value: emptyDir - description: emptyDir - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - 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: setPermissionsSimple - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "simpleHP"]] - type: boolean - default: false - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPathSimple - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "simpleHP"]] - type: hostpath - - 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 - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 999Gi - - variable: hostPathType - label: (Advanced) hostPath Type - schema: - show_if: [["type", "=", "hostPath"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: DirectoryOrCreate - description: DirectoryOrCreate - - value: Directory - description: Directory - - value: FileOrCreate - description: FileOrCreate - - value: File - description: File - - value: Socket - description: Socket - - value: CharDevice - description: CharDevice - - value: BlockDevice - description: BlockDevice - - variable: storageClass - label: (Advanced) storageClass - description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: SCALE-ZFS - - variable: accessMode - label: (Advanced) Access Mode - description: Allow or disallow multiple PVC's writhing to the same PV - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: ReadWriteOnce - enum: - - value: ReadWriteOnce - description: ReadWriteOnce - - value: ReadOnlyMany - description: ReadOnlyMany - - value: ReadWriteMany - description: ReadWriteMany - - variable: advanced - label: Show Advanced Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: name - label: Name (Optional) - description: "Not required, please set to config when mounting /config or temp when mounting /tmp" - schema: - type: string - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: simpleHP - enum: - - value: simplePVC - description: PVC (Simple) - - value: simpleHP - description: Host Path (Simple) - - value: emptyDir - description: emptyDir - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - 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: setPermissionsSimple - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "simpleHP"]] - type: boolean - default: false - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPathSimple - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "simpleHP"]] - type: hostpath - - 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: 999Gi - - variable: hostPathType - label: (Advanced) Host Path Type - schema: - show_if: [["type", "=", "hostPath"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: DirectoryOrCreate - description: DirectoryOrCreate - - value: Directory - description: Directory - - value: FileOrCreate - description: FileOrCreate - - value: File - description: File - - value: Socket - description: Socket - - value: CharDevice - description: CharDevice - - value: BlockDevice - description: BlockDevice - - variable: storageClass - label: (Advanced) StorageClass - description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: SCALE-ZFS - - variable: accessMode - label: (Advanced) Access Mode - description: Allow or disallow multiple PVC's writhing to the same PV - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: ReadWriteOnce - enum: - - value: ReadWriteOnce - description: ReadWriteOnce - - value: ReadOnlyMany - description: ReadOnlyMany - - value: ReadWriteMany - description: ReadWriteMany - - variable: advanced - label: Show Advanced Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: [] - 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: tls - label: TLS-Settings - schema: - type: list - 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: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: expert - label: Show Expert Configuration Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enableFixedMiddlewares - description: These middlewares enforce a number of best practices. - label: Enable Default Middlewares - schema: - type: boolean - default: true - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: service - 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: [] - 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: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - 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 - 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: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: capabilities - label: Capabilities - schema: - additional_attrs: true - type: dict - attrs: - - variable: drop - label: Drop Capability - schema: - type: list - default: [] - items: - - variable: dropEntry - label: "" - schema: - type: string - - variable: add - label: Add Capability - schema: - type: list - default: [] - items: - - variable: addEntry - label: "" - schema: - type: string - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - 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 this App of the user running the application" - schema: - type: int - default: 568 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - 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 - - - variable: advancedresources - label: Set Custom Resource Limits/Requests (Advanced) - group: Resources and Devices - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: resources - label: "" - 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/docs/manual/SCALE%20Apps/indepth/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/docs/manual/SCALE%20Apps/indepth/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 - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - 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/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - 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: hostPath - 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" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: autoscaling -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - 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: -# additional_attrs: true -# type: dict -# attrs: -# - 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: 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: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - 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 - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - 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: 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: Sock5 Server - 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: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - 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 - - 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: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - 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: 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: 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: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - 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: promtail - label: Promtail - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: loki - label: Loki URL - schema: - type: string - required: true - - variable: logs - label: Log Paths - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: path - label: Path - schema: - type: string - required: true - - variable: args - label: Promtail Command Line Arguments - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - required: true - - variable: envList - label: Promtail 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: 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/docs/about/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/enterprise/vaultwarden/16.0.37/templates/_configmap.tpl b/enterprise/vaultwarden/16.0.37/templates/_configmap.tpl deleted file mode 100644 index 8809925abdf..00000000000 --- a/enterprise/vaultwarden/16.0.37/templates/_configmap.tpl +++ /dev/null @@ -1,116 +0,0 @@ -{{/* Define the configmap */}} -{{- define "vaultwarden.configmap" -}} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: vaultwardenconfig -data: - ROCKET_PORT: "8080" - SIGNUPS_ALLOWED: {{ .Values.vaultwarden.allowSignups | quote }} - {{- if .Values.vaultwarden.signupDomains }} - SIGNUPS_DOMAINS_WHITELIST: {{ join "," .Values.vaultwarden.signupDomains | quote }} - {{- end }} - {{- if and (eq .Values.vaultwarden.verifySignup true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Signup verification requires SMTP to be enabled" nil}}{{end}} - SIGNUPS_VERIFY: {{ .Values.vaultwarden.verifySignup | quote }} - {{- if and (eq .Values.vaultwarden.requireEmail true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Requiring emails for login depends on SMTP" nil}}{{end}} - REQUIRE_DEVICE_EMAIL: {{ .Values.vaultwarden.requireEmail | quote }} - {{- if .Values.vaultwarden.emailAttempts }} - EMAIL_ATTEMPTS_LIMIT: {{ .Values.vaultwarden.emailAttempts | quote }} - {{- end }} - {{- if .Values.vaultwarden.emailTokenExpiration }} - EMAIL_EXPIRATION_TIME: {{ .Values.vaultwarden.emailTokenExpiration | quote }} - {{- end }} - INVITATIONS_ALLOWED: {{ .Values.vaultwarden.allowInvitation | quote }} - {{- if .Values.vaultwarden.defaultInviteName }} - INVITATION_ORG_NAME: {{ .Values.vaultwarden.defaultInviteName | quote }} - {{- end }} - SHOW_PASSWORD_HINT: {{ .Values.vaultwarden.showPasswordHint | quote }} - WEBSOCKET_ENABLED: {{ .Values.vaultwarden.enableWebsockets | quote }} - WEB_VAULT_ENABLED: {{ .Values.vaultwarden.enableWebVault | quote }} - ORG_CREATION_USERS: {{ .Values.vaultwarden.orgCreationUsers | quote }} - {{- if .Values.vaultwarden.attachmentLimitOrg }} - ORG_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitOrg | quote }} - {{- end }} - {{- if .Values.vaultwarden.attachmentLimitUser }} - USER_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitUser | quote }} - {{- end }} - {{- if .Values.vaultwarden.hibpApiKey }} - HIBP_API_KEY: {{ .Values.vaultwarden.hibpApiKey | quote }} - {{- end }} - {{- include "vaultwarden.dbTypeValid" . }} - {{- if .Values.database.retries }} - DB_CONNECTION_RETRIES: {{ .Values.database.retries | quote }} - {{- end }} - {{- if .Values.database.maxConnections }} - DATABASE_MAX_CONNS: {{ .Values.database.maxConnections | quote }} - {{- end }} - {{- if eq .Values.vaultwarden.smtp.enabled true }} - SMTP_HOST: {{ required "SMTP host is required to enable SMTP" .Values.vaultwarden.smtp.host | quote }} - SMTP_FROM: {{ required "SMTP sender address ('from') is required to enable SMTP" .Values.vaultwarden.smtp.from | quote }} - {{- if .Values.vaultwarden.smtp.fromName }} - SMTP_FROM_NAME: {{ .Values.vaultwarden.smtp.fromName | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.ssl }} - SMTP_SSL: {{ .Values.vaultwarden.smtp.ssl | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.port }} - SMTP_PORT: {{ .Values.vaultwarden.smtp.port | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.authMechanism }} - SMTP_AUTH_MECHANISM: {{ .Values.vaultwarden.smtp.authMechanism | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.heloName }} - HELO_NAME: {{ .Values.vaultwarden.smtp.heloName | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.timeout }} - SMTP_TIMEOUT: {{ .Values.vaultwarden.smtp.timeout | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.invalidHostname }} - SMTP_ACCEPT_INVALID_HOSTNAMES: {{ .Values.vaultwarden.smtp.invalidHostname | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.invalidCertificate }} - SMTP_ACCEPT_INVALID_CERTS: {{ .Values.vaultwarden.smtp.invalidCertificate | quote }} - {{- end }} - {{- end }} - {{- if .Values.vaultwarden.log.file }} - LOG_FILE: {{ .Values.vaultwarden.log.file | quote }} - {{- end }} - {{- if or .Values.vaultwarden.log.level .Values.vaultwarden.log.timeFormat }} - EXTENDED_LOGGING: "true" - {{- end }} - {{- if .Values.vaultwarden.log.level }} - {{- include "vaultwarden.logLevelValid" . }} - LOG_LEVEL: {{ .Values.vaultwarden.log.level | quote }} - {{- end }} - {{- if .Values.vaultwarden.log.timeFormat }} - LOG_TIMESTAMP_FORMAT: {{ .Values.vaultwarden.log.timeFormat | quote }} - {{- end }} - {{- if .Values.vaultwarden.icons.disableDownload }} - DISABLE_ICON_DOWNLOAD: {{ .Values.vaultwarden.icons.disableDownload | quote }} - {{- if and (not .Values.vaultwarden.icons.cache) (eq .Values.vaultwarden.icons.disableDownload "true") }} - ICON_CACHE_TTL: "0" - {{- end }} - {{- end }} - {{- if .Values.vaultwarden.icons.cache }} - ICON_CACHE_TTL: {{ .Values.vaultwarden.icons.cache | quote }} - {{- end }} - {{- if .Values.vaultwarden.icons.cacheFailed }} - ICON_CACHE_NEGTTL: {{ .Values.vaultwarden.icons.cacheFailed | quote }} - {{- end }} - {{- if eq .Values.vaultwarden.admin.enabled true }} - {{- if eq .Values.vaultwarden.admin.disableAdminToken true }} - DISABLE_ADMIN_TOKEN: "true" - {{- end }} - {{- end }} - {{- if eq .Values.vaultwarden.yubico.enabled true }} - {{- if .Values.vaultwarden.yubico.server }} - YUBICO_SERVER: {{ .Values.vaultwarden.yubico.server | quote }} - {{- end }} - {{- end }} - {{- if eq .Values.database.type "sqlite" }} - ENABLE_DB_WAL: {{ .Values.database.wal | quote }} - {{- else }} - ENABLE_DB_WAL: "false" - {{- end }} -{{- end -}} diff --git a/enterprise/vaultwarden/16.0.37/templates/_secrets.tpl b/enterprise/vaultwarden/16.0.37/templates/_secrets.tpl deleted file mode 100644 index ca5ec74b0af..00000000000 --- a/enterprise/vaultwarden/16.0.37/templates/_secrets.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{{/* Define the secrets */}} -{{- define "vaultwarden.secrets" -}} - -{{- $adminToken := "" }} -{{- if eq .Values.vaultwarden.admin.enabled true }} -{{- $adminToken = .Values.vaultwarden.admin.token | default (randAlphaNum 48) | b64enc | quote }} -{{- end -}} - -{{- $smtpUser := "" }} -{{- if and (eq .Values.vaultwarden.smtp.enabled true ) (.Values.vaultwarden.smtp.user) }} -{{- $smtpUser = .Values.vaultwarden.smtp.user | b64enc | quote }} -{{- end -}} - -{{- $yubicoClientId := "" }} -{{- if eq .Values.vaultwarden.yubico.enabled true }} -{{- $yubicoClientId = required "Yubico Client ID required" .Values.vaultwarden.yubico.clientId | toString | b64enc | quote }} -{{- end -}} ---- - -apiVersion: v1 -kind: Secret -metadata: - name: vaultwardensecret -data: - {{- if ne $adminToken "" }} - ADMIN_TOKEN: {{ $adminToken }} - {{- end }} - {{- if ne $smtpUser "" }} - SMTP_USERNAME: {{ $smtpUser }} - SMTP_PASSWORD: {{ required "Must specify SMTP password" .Values.vaultwarden.smtp.password | b64enc | quote }} - {{- end }} - {{- if ne $yubicoClientId "" }} - YUBICO_CLIENT_ID: {{ $yubicoClientId }} - YUBICO_SECRET_KEY: {{ required "Yubico Secret Key required" .Values.vaultwarden.yubico.secretKey | b64enc | quote }} - {{- end }} -{{- end -}} diff --git a/enterprise/vaultwarden/16.0.37/templates/_validate.tpl b/enterprise/vaultwarden/16.0.37/templates/_validate.tpl deleted file mode 100644 index e4832c2f6e5..00000000000 --- a/enterprise/vaultwarden/16.0.37/templates/_validate.tpl +++ /dev/null @@ -1,17 +0,0 @@ -{{/* -Ensure valid DB type is select, defaults to SQLite -*/}} -{{- define "vaultwarden.dbTypeValid" -}} -{{- if not (or (eq .Values.database.type "postgresql") (eq .Values.database.type "mysql") (eq .Values.database.type "sqlite")) }} -{{- required "Invalid database type" nil }} -{{- end -}} -{{- end -}} - -{{/* -Ensure log type is valid -*/}} -{{- define "vaultwarden.logLevelValid" -}} -{{- if not (or (eq .Values.vaultwarden.log.level "trace") (eq .Values.vaultwarden.log.level "debug") (eq .Values.vaultwarden.log.level "info") (eq .Values.vaultwarden.log.level "warn") (eq .Values.vaultwarden.log.level "error") (eq .Values.vaultwarden.log.level "off")) }} -{{- required "Invalid log level" nil }} -{{- end }} -{{- end }} diff --git a/enterprise/vaultwarden/16.0.37/templates/common.yaml b/enterprise/vaultwarden/16.0.37/templates/common.yaml deleted file mode 100644 index 577816b14ce..00000000000 --- a/enterprise/vaultwarden/16.0.37/templates/common.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.common.loader.init" . }} - - -{{/* Render configmap for vaultwarden */}} -{{- include "vaultwarden.configmap" . }} - -{{/* Render secrets for vaultwarden */}} -{{- include "vaultwarden.secrets" . }} - -{{/* Define path for websocket */}} -{{- define "vaultwarden.websocket" -}} -{{- $fullname := include "tc.common.names.fullname" . -}} -path: "/notifications/hub" -# -- Ignored if not kubeVersion >= 1.14-0 -pathType: Prefix -service: - # -- Overrides the service name reference for this path - name: {{ printf "%s-ws" $fullname }} - port: {{ .Values.service.ws.ports.ws.port }} -{{- end -}} - -{{/* inject websocket path to all main ingress hosts*/}} -{{- define "vaultwarden.websocketinjector" -}} -{{- $path := list (include "vaultwarden.websocket" . | fromYaml) -}} -{{- if .Values.ingress.main.enabled }} -{{- range .Values.ingress.main.hosts }} -{{- $newpaths := list }} -{{- $newpaths := concat .paths $path }} -{{- $_ := set . "paths" ( deepCopy $newpaths ) -}} -{{- end }} -{{- end }} -{{- end -}} - -{{/* inject websocket paths in ingress */}} -{{- include "vaultwarden.websocketinjector" . }} - -{{/* Render the templates */}} -{{ include "tc.common.loader.apply" . }} diff --git a/enterprise/vaultwarden/16.0.37/values.yaml b/enterprise/vaultwarden/16.0.37/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/enterprise/vaultwarden/17.0.0/CHANGELOG.md b/enterprise/vaultwarden/17.0.0/CHANGELOG.md deleted file mode 100644 index ef8063293ea..00000000000 --- a/enterprise/vaultwarden/17.0.0/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - - -## [vaultwarden-17.0.0](https://github.com/truecharts/charts/compare/vaultwarden-16.0.37...vaultwarden-17.0.0) (2022-09-24) - -### Chore - -- Auto-update chart README [skip ci] - - bump major on new enterprise app to seperate helm updates - - - - -## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - refactor Services SCALE GUI - - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - - - - -## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - refactor Services SCALE GUI - - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - - - - -## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - refactor Services SCALE GUI - - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - - - - -## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - Auto-update chart README [skip ci] - - refactor Services SCALE GUI - - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) diff --git a/enterprise/vaultwarden/17.0.0/Chart.lock b/enterprise/vaultwarden/17.0.0/Chart.lock deleted file mode 100644 index 8fd9c98ebaf..00000000000 --- a/enterprise/vaultwarden/17.0.0/Chart.lock +++ /dev/null @@ -1,9 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.6.0 -- name: postgresql - repository: https://charts.truecharts.org/ - version: 8.0.78 -digest: sha256:c7d95291348fad2484e6426c23dcba89f034b969ba2268f6acaab77d153d42fe -generated: "2022-09-24T21:36:04.323893916Z" diff --git a/enterprise/vaultwarden/17.0.0/Chart.yaml b/enterprise/vaultwarden/17.0.0/Chart.yaml deleted file mode 100644 index b75e5c26a74..00000000000 --- a/enterprise/vaultwarden/17.0.0/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: v2 -appVersion: "1.25.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 10.6.0 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 8.0.78 -deprecated: false -description: Unofficial Bitwarden compatible server written in Rust -home: https://truecharts.org/docs/charts/enterprise/vaultwarden -icon: https://truecharts.org/img/hotlink-ok/chart-icons/vaultwarden.png -keywords: - - bitwarden - - bitwardenrs - - bitwarden_rs - - vaultwarden - - password - - rust -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: vaultwarden -sources: - - https://github.com/truecharts/charts/tree/master/charts/enterprise/vaultwarden - - https://github.com/dani-garcia/vaultwarden -type: application -version: 17.0.0 -annotations: - truecharts.org/catagories: | - - security - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/enterprise/vaultwarden/17.0.0/README.md b/enterprise/vaultwarden/17.0.0/README.md deleted file mode 100644 index bbb0f8bc0e1..00000000000 --- a/enterprise/vaultwarden/17.0.0/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# vaultwarden - -Unofficial Bitwarden compatible server written in Rust - -TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. - -This readme is just an automatically generated general guide on installing our Helm Charts and Apps. -For more information, please click here: [vaultwarden](https://truecharts.org/docs/charts/enterprise/vaultwarden) - -**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)** - -## Source Code - -* -* - -## Requirements - -Kubernetes: `>=1.16.0-0` - -## Dependencies - -| Repository | Name | Version | -|------------|------|---------| -| https://charts.truecharts.org/ | postgresql | 8.0.78 | -| https://library-charts.truecharts.org | common | 10.6.0 | - -## Installing the Chart - -### TrueNAS SCALE - -To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). - -### Helm - -To install the chart with the release name `vaultwarden` - -```console -helm repo add TrueCharts https://charts.truecharts.org -helm repo update -helm install vaultwarden TrueCharts/vaultwarden -``` - -## Uninstall - -### TrueNAS SCALE - -**Upgrading, Rolling Back and Uninstalling the Chart** - -To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). - -### Helm - -To uninstall the `vaultwarden` deployment - -```console -helm uninstall vaultwarden -``` - -## Configuration - -### Helm - -#### Available Settings - -Read through the values.yaml file. It has several commented out suggested values. -Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). - -#### Configure using the command line - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -```console -helm install vaultwarden \ - --set env.TZ="America/New York" \ - TrueCharts/vaultwarden -``` - -#### Configure using a yaml file - -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. - -```console -helm install vaultwarden TrueCharts/vaultwarden -f values.yaml -``` - -#### Connecting to other charts - -If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. - -## Support - -- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/apps/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/enterprise/vaultwarden/17.0.0/app-readme.md b/enterprise/vaultwarden/17.0.0/app-readme.md deleted file mode 100644 index 037aa691afc..00000000000 --- a/enterprise/vaultwarden/17.0.0/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Unofficial Bitwarden compatible server written in Rust - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/enterprise/vaultwarden](https://truecharts.org/docs/charts/enterprise/vaultwarden) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/vaultwarden/17.0.0/charts/common-10.6.0.tgz b/enterprise/vaultwarden/17.0.0/charts/common-10.6.0.tgz deleted file mode 100644 index 0308b85a1a8c5cdc7a0461f210d9fce394ddcc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48413 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
KPcWi?AjRt8dcO>Kj{^;Y=)xFUwY} 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 diff --git a/enterprise/vaultwarden/17.0.0/ci/default-values.yaml b/enterprise/vaultwarden/17.0.0/ci/default-values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml b/enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml deleted file mode 100644 index 961f466bd75..00000000000 --- a/enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# -- Configure the ingresses for the chart here. -# Additional ingresses can be added by adding a dictionary key similar to the 'main' ingress. -# @default -- See below -ingress: - main: - # -- Enables or disables the ingress - enabled: true diff --git a/enterprise/vaultwarden/17.0.0/ix_values.yaml b/enterprise/vaultwarden/17.0.0/ix_values.yaml deleted file mode 100644 index 66fcab86267..00000000000 --- a/enterprise/vaultwarden/17.0.0/ix_values.yaml +++ /dev/null @@ -1,159 +0,0 @@ -image: - repository: tccr.io/truecharts/vaultwarden - pullPolicy: IfNotPresent - tag: 1.25.2@sha256:ec34588ef04cfdf79cdbb0f90882b3073d8baa39d9aaf8aa86abbb263049f8eb - -service: - main: - ports: - main: - port: 10102 - targetPort: 8080 - ws: - enabled: true - ports: - ws: - enabled: true - port: 3012 - targetPort: 3012 - -env: - DOMAIN: "https://{{ if .Values.ingress }}{{ if .Values.ingress.main.enabled }}{{ ( index .Values.ingress.main.hosts 0 ).host }}{{ else }}placeholder.com{{ end }}{{ else }}placeholder.com{{ end }}" - DATABASE_URL: - secretKeyRef: - name: dbcreds - key: url - -envFrom: - - configMapRef: - name: vaultwardenconfig - - secretRef: - name: vaultwardensecret - -database: - # -- Database type, - # must be one of: 'sqlite', 'mysql' or 'postgresql'. - type: postgresql - # -- Enable DB Write-Ahead-Log for SQLite, - # disabled for other databases. https://github.com/dani-garcia/bitwarden_rs/wiki/Running-without-WAL-enabled - wal: true - ## URL for external databases (mysql://user:pass@host:port or postgresql://user:pass@host:port). - # url: "" - ## Set the size of the database connection pool. - # maxConnections: 10 - ## Connection retries during startup, 0 for infinite. 1 second between retries. - # retries: 15 - -# Set Bitwarden_rs application variables -vaultwarden: - # -- Allow any user to sign-up - # see: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-registration-of-new-users - allowSignups: true - ## Whitelist domains allowed to sign-up. 'allowSignups' is ignored if set. - # signupDomains: - # - domain.tld - # -- Verify e-mail before login is enabled. - # SMTP must be enabled. - verifySignup: false - # When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled. - requireEmail: false - ## Maximum attempts before an email token is reset and a new email will need to be sent. - # emailAttempts: 3 - ## Email token validity in seconds. - # emailTokenExpiration: 600 - # Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-invitations - allowInvitation: true - # Show password hints: https://github.com/dani-garcia/bitwarden_rs/wiki/Password-hint-display - ## Default organization name in invitation e-mails that are not coming from a specific organization. - # defaultInviteName: "" - showPasswordHint: true - # Enable Websockets for notification. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-WebSocket-notifications - # Redirect HTTP path "/notifications/hub" to port 3012. Ingress/IngressRoute controllers are automatically configured. - enableWebsockets: true - # Enable Web Vault (static content). https://github.com/dani-garcia/bitwarden_rs/wiki/Disabling-or-overriding-the-Vault-interface-hosting - enableWebVault: true - # Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users. - orgCreationUsers: all - ## Limit attachment disk usage per organization. - # attachmentLimitOrg: - ## Limit attachment disk usage per user. - # attachmentLimitUser: - ## HaveIBeenPwned API Key. Can be purchased at https://haveibeenpwned.com/API/Key. - # hibpApiKey: - - admin: - # Enable admin portal. - enabled: false - # Disabling the admin token will make the admin portal accessible to anyone, use carefully: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-admin-token - disableAdminToken: false - ## Token for admin login, will be generated if not defined. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-admin-page - # token: - - # Enable SMTP. https://github.com/dani-garcia/bitwarden_rs/wiki/SMTP-configuration - smtp: - enabled: false - # SMTP hostname, required if SMTP is enabled. - host: "" - # SMTP sender e-mail address, required if SMTP is enabled. - from: "" - ## SMTP sender name, defaults to 'Bitwarden_RS'. - # fromName: "" - ## Enable SSL connection. - # ssl: true - ## SMTP port. Defaults to 25 without SSL, 587 with SSL. - # port: 587 - ## SMTP Authentication Mechanisms. Comma-separated options: 'Plain', 'Login' and 'Xoauth2'. Defaults to 'Plain'. - # authMechanism: Plain - ## Hostname to be sent for SMTP HELO. Defaults to pod name. - # heloName: "" - ## SMTP timeout. - # timeout: 15 - ## Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks! - # invalidHostname: false - ## Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks! - # invalidCertificate: false - ## SMTP username. - # user: "" - ## SMTP password. Required is user is specified, ignored if no user provided. - # password: "" - - ## Enable Yubico OTP authentication. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-Yubikey-OTP-authentication - yubico: - enabled: false - ## Yubico server. Defaults to YubiCloud. - # server: - ## Yubico ID and Secret Key. - # clientId: - # secretKey: - - ## Logging options. https://github.com/dani-garcia/bitwarden_rs/wiki/Logging - log: - # Log to file. - file: "" - # Log level. Options are "trace", "debug", "info", "warn", "error" or "off". - level: "trace" - ## Log timestamp format. See https://docs.rs/chrono/0.4.15/chrono/format/strftime/index.html. Defaults to time in milliseconds. - # timeFormat: "" - - icons: - # Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache). TTL will default to zero. - disableDownload: false - ## Cache time-to-live for icons fetched. 0 means no purging. - # cache: 2592000 - ## Cache time-to-live for icons that were not available. 0 means no purging. - # cacheFailed: 259200 - -persistence: - data: - enabled: true - mountPath: "/data" - -# Enabled postgres -postgresql: - enabled: true - existingSecret: "dbcreds" - postgresqlUsername: vaultwarden - postgresqlDatabase: vaultwarden - -portal: - enabled: true diff --git a/enterprise/vaultwarden/17.0.0/questions.yaml b/enterprise/vaultwarden/17.0.0/questions.yaml deleted file mode 100644 index 1b0ea25d73a..00000000000 --- a/enterprise/vaultwarden/17.0.0/questions.yaml +++ /dev/null @@ -1,2980 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: Controller - description: Configure Workload Deployment - - name: Container Configuration - description: Additional Container Configuration - - 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: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - admin: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "/admin/" -questions: - - variable: global - label: Global Settings - group: Controller - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: Controller - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: advanced - label: Show Advanced Controller Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: type - description: Please specify type of workload to deploy - label: (Advanced) Controller Type - schema: - type: string - required: true - enum: - - value: deployment - description: Deployment - - value: statefulset - description: Statefulset - - value: daemonset - description: Daemonset - default: deployment - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: strategy - description: Please specify type of workload to deploy - label: (Advanced) Update Strategy - schema: - type: string - required: true - enum: - - value: Recreate - description: "Recreate: Kill existing pods before creating new ones" - - value: RollingUpdate - description: "RollingUpdate: Create new pods and then kill old ones" - - value: OnDelete - description: "(Legacy) OnDelete: ignore .spec.template changes" - default: Recreate - - variable: expert - label: Show Expert Configuration Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: labelsList - label: Controller Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Controller Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: customextraargs - group: Controller - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: Container Configuration - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - 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..." - group: Container Configuration - 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: expertpodconf - group: Container Configuration - label: Show Expert Configuration - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: tty - label: Enable TTY - description: Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled. - group: Workload Details - schema: - type: boolean - default: false - - variable: stdin - label: Enable STDIN - description: Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled. - group: Workload Details - schema: - type: boolean - default: false - - variable: termination - group: Container Configuration - label: Termination settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: gracePeriodSeconds - label: Grace Period Seconds - schema: - type: int - default: 10 - - variable: podLabelsList - group: Container Configuration - label: Pod Labels - schema: - type: list - default: [] - items: - - variable: podLabelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: podAnnotationsList - group: Container Configuration - label: Pod Annotations - schema: - type: list - default: [] - items: - - variable: podAnnotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: vaultwarden - label: "" - group: "App Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: yubico - label: "Yubico OTP authentication" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: "Enable Yubico OTP authentication" - description: "Please refer to the manual at: https://github.com/dani-garcia/vaultwarden/wiki/Enabling-Yubikey-OTP-authentication" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: server - label: "Yubico server" - description: "Defaults to YubiCloud" - schema: - type: string - default: "" - - variable: clientId - label: "Yubico ID" - schema: - type: string - default: "" - - variable: secretKey - label: "Yubico Secret Key" - schema: - type: string - default: "" - - variable: admin - label: "Admin Portal" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: "Enable Admin Portal" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: disableAdminToken - label: "Make Accessible Without Password/Token" - schema: - type: boolean - default: false - - variable: token - label: "Admin Portal Password/Token" - description: "Will be automatically generated if not defined" - schema: - type: string - default: "" - - variable: icons - label: "Icon Download Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: disableDownload - label: "Disable Icon Download" - description: "Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache)" - schema: - type: boolean - default: false - - variable: cache - label: "Cache time-to-live" - description: "Cache time-to-live for icons fetched. 0 means no purging" - schema: - type: int - default: 2592000 - - variable: token - label: "Failed Downloads Cache time-to-live" - description: "Cache time-to-live for icons that were not available. 0 means no purging." - schema: - type: int - default: 2592000 - - variable: log - label: "Logging" - schema: - additional_attrs: true - type: dict - attrs: - - variable: level - label: "Log level" - schema: - type: string - default: "info" - required: true - enum: - - value: "trace" - description: "trace" - - value: "debug" - description: "debug" - - value: "info" - description: "info" - - value: "warn" - description: "warn" - - value: "error" - description: "error" - - value: "off" - description: "off" - - variable: file - label: "Log-File Location" - schema: - type: string - default: "" - - variable: smtp - label: "SMTP Settings (Email)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: "Enable SMTP Support" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: host - label: "SMTP hostname" - schema: - type: string - required: true - default: "" - - variable: from - label: "SMTP sender e-mail address" - schema: - type: string - required: true - default: "" - - variable: fromName - label: "SMTP sender name" - schema: - type: string - required: true - default: "" - - variable: user - label: "SMTP username" - schema: - type: string - required: true - default: "" - - variable: password - label: "SMTP password" - description: "Required is user is specified, ignored if no user provided" - schema: - type: string - default: "" - - variable: ssl - label: "Enable SSL connection" - schema: - type: boolean - default: true - - variable: port - label: "SMTP port" - description: "Usually: 25 without SSL, 587 with SSL" - schema: - type: int - default: 587 - - variable: authMechanism - label: "SMTP Authentication Mechanisms" - description: "Comma-separated options: Plain, Login and Xoauth2" - schema: - type: string - default: "Plain" - - variable: heloName - label: "SMTP HELO - Hostname" - description: "Hostname to be sent for SMTP HELO. Defaults to pod name" - schema: - type: string - default: "" - - variable: timeout - label: "SMTP timeout" - schema: - type: int - default: 15 - - variable: invalidHostname - label: "Accept Invalid Hostname" - description: "Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks!" - schema: - type: boolean - default: false - - variable: invalidCertificate - label: "Accept Invalid Certificate" - description: "Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks!" - schema: - type: boolean - default: false - - variable: allowSignups - label: "Allow Signup" - description: "Allow any user to sign-up: https://github.com/dani-garcia/vaultwarden/wiki/Disable-registration-of-new-users" - schema: - type: boolean - default: true - - variable: allowInvitation - label: "Always allow Invitation" - description: "Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/vaultwarden/wiki/Disable-invitations" - schema: - type: boolean - default: true - - variable: defaultInviteName - label: "Default Invite Organisation Name" - description: "Default organization name in invitation e-mails that are not coming from a specific organization." - schema: - type: string - default: "" - - variable: showPasswordHint - label: "Show password hints" - description: "https://github.com/dani-garcia/vaultwarden/wiki/Password-hint-display" - schema: - type: boolean - default: true - - variable: signupwhitelistenable - label: "Enable Signup Whitelist" - description: "allowSignups is ignored if set" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: signupDomains - label: "Signup Whitelist Domains" - schema: - type: list - default: [] - items: - - variable: domain - label: "Domain" - schema: - type: string - default: "" - - variable: verifySignup - label: "Verifiy Signup" - description: "Verify e-mail before login is enabled. SMTP must be enabled" - schema: - type: boolean - default: false - - variable: requireEmail - label: "Block Login if email fails" - description: "When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled" - schema: - type: boolean - default: false - - variable: emailAttempts - label: "Email token reset attempts" - description: "Maximum attempts before an email token is reset and a new email will need to be sent" - schema: - type: int - default: 3 - - variable: emailTokenExpiration - label: "Email token validity in seconds" - schema: - type: int - default: 600 - - variable: enableWebVault - label: "Enable Webvault" - description: "Enable Web Vault (static content). https://github.com/dani-garcia/vaultwarden/wiki/Disabling-or-overriding-the-Vault-interface-hosting" - schema: - type: boolean - default: true - - variable: orgCreationUsers - label: "Limit Organisation Creation to (users)" - description: "Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users." - schema: - type: string - default: "all" - - variable: attachmentLimitOrg - label: "Limit Attachment Disk Usage per Organisation" - schema: - type: string - default: "" - - variable: attachmentLimitUser - label: "Limit Attachment Disk Usage per User" - schema: - type: string - default: "" - - variable: hibpApiKey - label: "HaveIBeenPwned API Key" - description: "Can be purchased at https://haveibeenpwned.com/API/Key" - schema: - type: string - default: "" - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - 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: The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10102 - required: true - - variable: advanced - label: Show Advanced Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enable the Port - schema: - type: boolean - hidden: true - default: true - - variable: protocol - label: Port Type - schema: - type: string - default: HTTP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: nodePort - label: Node Port (Optional) - description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer - schema: - type: int - min: 9000 - max: 65535 - - variable: targetPort - label: "Target Port" - description: "The internal(!) port on the container the Application runs on" - schema: - type: int - default: 8080 - - variable: ws - label: "WebSocket Service" - description: "WebSocket Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - 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: The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ws - label: "WebSocket Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3012 - required: true - - variable: advanced - label: Show Advanced Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enable the Port - schema: - type: boolean - hidden: true - default: true - - variable: protocol - label: Port Type - schema: - type: string - default: HTTP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: nodePort - label: Node Port (Optional) - description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer - schema: - type: int - min: 9000 - max: 65535 - - variable: targetPort - label: "Target Port" - description: "The internal(!) port on the container the Application runs on" - schema: - type: int - default: 3012 - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: dnsPolicy - group: Networking and Services - label: dnsPolicy - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ClusterFirst - description: ClusterFirst - - value: ClusterFirstWithHostNet - description: ClusterFirstWithHostNet - - value: None - description: None - - variable: dnsConfig - label: DNS Configuration - group: Networking and Services - description: Specify custom DNS configuration which will be applied to the pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: nameservers - label: Name Servers - schema: - default: [] - type: list - items: - - variable: nameserver - label: Name Server - schema: - type: string - - variable: options - label: Options - schema: - default: [] - type: list - items: - - variable: option - label: Option Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: searches - label: Searches - schema: - default: [] - type: list - items: - - variable: search - label: Search Entry - schema: - type: string - - 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: data - label: "App Config Storage" - description: "Stores the Application Configuration." - 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: simplePVC - enum: - - value: simplePVC - description: PVC (simple) - - value: simpleHP - description: Host Path (simple) - - value: emptyDir - description: emptyDir - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - 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: setPermissionsSimple - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "simpleHP"]] - type: boolean - default: false - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPathSimple - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "simpleHP"]] - type: hostpath - - 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 - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 999Gi - - variable: hostPathType - label: (Advanced) hostPath Type - schema: - show_if: [["type", "=", "hostPath"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: DirectoryOrCreate - description: DirectoryOrCreate - - value: Directory - description: Directory - - value: FileOrCreate - description: FileOrCreate - - value: File - description: File - - value: Socket - description: Socket - - value: CharDevice - description: CharDevice - - value: BlockDevice - description: BlockDevice - - variable: storageClass - label: (Advanced) storageClass - description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: SCALE-ZFS - - variable: accessMode - label: (Advanced) Access Mode - description: Allow or disallow multiple PVC's writhing to the same PV - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: ReadWriteOnce - enum: - - value: ReadWriteOnce - description: ReadWriteOnce - - value: ReadOnlyMany - description: ReadOnlyMany - - value: ReadWriteMany - description: ReadWriteMany - - variable: advanced - label: Show Advanced Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: name - label: Name (Optional) - description: "Not required, please set to config when mounting /config or temp when mounting /tmp" - schema: - type: string - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: simpleHP - enum: - - value: simplePVC - description: PVC (Simple) - - value: simpleHP - description: Host Path (Simple) - - value: emptyDir - description: emptyDir - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - 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: setPermissionsSimple - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "simpleHP"]] - type: boolean - default: false - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPathSimple - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "simpleHP"]] - type: hostpath - - 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: 999Gi - - variable: hostPathType - label: (Advanced) Host Path Type - schema: - show_if: [["type", "=", "hostPath"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: DirectoryOrCreate - description: DirectoryOrCreate - - value: Directory - description: Directory - - value: FileOrCreate - description: FileOrCreate - - value: File - description: File - - value: Socket - description: Socket - - value: CharDevice - description: CharDevice - - value: BlockDevice - description: BlockDevice - - variable: storageClass - label: (Advanced) StorageClass - description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: SCALE-ZFS - - variable: accessMode - label: (Advanced) Access Mode - description: Allow or disallow multiple PVC's writhing to the same PV - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: ReadWriteOnce - enum: - - value: ReadWriteOnce - description: ReadWriteOnce - - value: ReadOnlyMany - description: ReadOnlyMany - - value: ReadWriteMany - description: ReadWriteMany - - variable: advanced - label: Show Advanced Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: [] - 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: tls - label: TLS-Settings - schema: - type: list - 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: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: expert - label: Show Expert Configuration Options - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enableFixedMiddlewares - description: These middlewares enforce a number of best practices. - label: Enable Default Middlewares - schema: - type: boolean - default: true - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: labelsList - label: Labels - schema: - type: list - default: [] - items: - - variable: labelItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: annotationsList - label: Annotations - schema: - type: list - default: [] - items: - - variable: annotationItem - label: Label - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - 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: service - 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: [] - 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: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - 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 - 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: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: capabilities - label: Capabilities - schema: - additional_attrs: true - type: dict - attrs: - - variable: drop - label: Drop Capability - schema: - type: list - default: [] - items: - - variable: dropEntry - label: "" - schema: - type: string - - variable: add - label: Add Capability - schema: - type: list - default: [] - items: - - variable: addEntry - label: "" - schema: - type: string - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - 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 this App of the user running the application" - schema: - type: int - default: 568 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - 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 - - - variable: advancedresources - label: Set Custom Resource Limits/Requests (Advanced) - group: Resources and Devices - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: resources - label: "" - 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/docs/manual/SCALE%20Apps/indepth/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/docs/manual/SCALE%20Apps/indepth/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 - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - 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/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - 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: hostPath - 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" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: autoscaling -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - 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: -# additional_attrs: true -# type: dict -# attrs: -# - 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: 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: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - 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 - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - 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: 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: Sock5 Server - 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: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - 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 - - 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: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - 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: 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: 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: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - 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: promtail - label: Promtail - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: loki - label: Loki URL - schema: - type: string - required: true - - variable: logs - label: Log Paths - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: path - label: Path - schema: - type: string - required: true - - variable: args - label: Promtail Command Line Arguments - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - required: true - - variable: envList - label: Promtail 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: 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/docs/about/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/enterprise/vaultwarden/17.0.0/templates/_configmap.tpl b/enterprise/vaultwarden/17.0.0/templates/_configmap.tpl deleted file mode 100644 index 8809925abdf..00000000000 --- a/enterprise/vaultwarden/17.0.0/templates/_configmap.tpl +++ /dev/null @@ -1,116 +0,0 @@ -{{/* Define the configmap */}} -{{- define "vaultwarden.configmap" -}} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: vaultwardenconfig -data: - ROCKET_PORT: "8080" - SIGNUPS_ALLOWED: {{ .Values.vaultwarden.allowSignups | quote }} - {{- if .Values.vaultwarden.signupDomains }} - SIGNUPS_DOMAINS_WHITELIST: {{ join "," .Values.vaultwarden.signupDomains | quote }} - {{- end }} - {{- if and (eq .Values.vaultwarden.verifySignup true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Signup verification requires SMTP to be enabled" nil}}{{end}} - SIGNUPS_VERIFY: {{ .Values.vaultwarden.verifySignup | quote }} - {{- if and (eq .Values.vaultwarden.requireEmail true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Requiring emails for login depends on SMTP" nil}}{{end}} - REQUIRE_DEVICE_EMAIL: {{ .Values.vaultwarden.requireEmail | quote }} - {{- if .Values.vaultwarden.emailAttempts }} - EMAIL_ATTEMPTS_LIMIT: {{ .Values.vaultwarden.emailAttempts | quote }} - {{- end }} - {{- if .Values.vaultwarden.emailTokenExpiration }} - EMAIL_EXPIRATION_TIME: {{ .Values.vaultwarden.emailTokenExpiration | quote }} - {{- end }} - INVITATIONS_ALLOWED: {{ .Values.vaultwarden.allowInvitation | quote }} - {{- if .Values.vaultwarden.defaultInviteName }} - INVITATION_ORG_NAME: {{ .Values.vaultwarden.defaultInviteName | quote }} - {{- end }} - SHOW_PASSWORD_HINT: {{ .Values.vaultwarden.showPasswordHint | quote }} - WEBSOCKET_ENABLED: {{ .Values.vaultwarden.enableWebsockets | quote }} - WEB_VAULT_ENABLED: {{ .Values.vaultwarden.enableWebVault | quote }} - ORG_CREATION_USERS: {{ .Values.vaultwarden.orgCreationUsers | quote }} - {{- if .Values.vaultwarden.attachmentLimitOrg }} - ORG_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitOrg | quote }} - {{- end }} - {{- if .Values.vaultwarden.attachmentLimitUser }} - USER_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitUser | quote }} - {{- end }} - {{- if .Values.vaultwarden.hibpApiKey }} - HIBP_API_KEY: {{ .Values.vaultwarden.hibpApiKey | quote }} - {{- end }} - {{- include "vaultwarden.dbTypeValid" . }} - {{- if .Values.database.retries }} - DB_CONNECTION_RETRIES: {{ .Values.database.retries | quote }} - {{- end }} - {{- if .Values.database.maxConnections }} - DATABASE_MAX_CONNS: {{ .Values.database.maxConnections | quote }} - {{- end }} - {{- if eq .Values.vaultwarden.smtp.enabled true }} - SMTP_HOST: {{ required "SMTP host is required to enable SMTP" .Values.vaultwarden.smtp.host | quote }} - SMTP_FROM: {{ required "SMTP sender address ('from') is required to enable SMTP" .Values.vaultwarden.smtp.from | quote }} - {{- if .Values.vaultwarden.smtp.fromName }} - SMTP_FROM_NAME: {{ .Values.vaultwarden.smtp.fromName | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.ssl }} - SMTP_SSL: {{ .Values.vaultwarden.smtp.ssl | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.port }} - SMTP_PORT: {{ .Values.vaultwarden.smtp.port | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.authMechanism }} - SMTP_AUTH_MECHANISM: {{ .Values.vaultwarden.smtp.authMechanism | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.heloName }} - HELO_NAME: {{ .Values.vaultwarden.smtp.heloName | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.timeout }} - SMTP_TIMEOUT: {{ .Values.vaultwarden.smtp.timeout | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.invalidHostname }} - SMTP_ACCEPT_INVALID_HOSTNAMES: {{ .Values.vaultwarden.smtp.invalidHostname | quote }} - {{- end }} - {{- if .Values.vaultwarden.smtp.invalidCertificate }} - SMTP_ACCEPT_INVALID_CERTS: {{ .Values.vaultwarden.smtp.invalidCertificate | quote }} - {{- end }} - {{- end }} - {{- if .Values.vaultwarden.log.file }} - LOG_FILE: {{ .Values.vaultwarden.log.file | quote }} - {{- end }} - {{- if or .Values.vaultwarden.log.level .Values.vaultwarden.log.timeFormat }} - EXTENDED_LOGGING: "true" - {{- end }} - {{- if .Values.vaultwarden.log.level }} - {{- include "vaultwarden.logLevelValid" . }} - LOG_LEVEL: {{ .Values.vaultwarden.log.level | quote }} - {{- end }} - {{- if .Values.vaultwarden.log.timeFormat }} - LOG_TIMESTAMP_FORMAT: {{ .Values.vaultwarden.log.timeFormat | quote }} - {{- end }} - {{- if .Values.vaultwarden.icons.disableDownload }} - DISABLE_ICON_DOWNLOAD: {{ .Values.vaultwarden.icons.disableDownload | quote }} - {{- if and (not .Values.vaultwarden.icons.cache) (eq .Values.vaultwarden.icons.disableDownload "true") }} - ICON_CACHE_TTL: "0" - {{- end }} - {{- end }} - {{- if .Values.vaultwarden.icons.cache }} - ICON_CACHE_TTL: {{ .Values.vaultwarden.icons.cache | quote }} - {{- end }} - {{- if .Values.vaultwarden.icons.cacheFailed }} - ICON_CACHE_NEGTTL: {{ .Values.vaultwarden.icons.cacheFailed | quote }} - {{- end }} - {{- if eq .Values.vaultwarden.admin.enabled true }} - {{- if eq .Values.vaultwarden.admin.disableAdminToken true }} - DISABLE_ADMIN_TOKEN: "true" - {{- end }} - {{- end }} - {{- if eq .Values.vaultwarden.yubico.enabled true }} - {{- if .Values.vaultwarden.yubico.server }} - YUBICO_SERVER: {{ .Values.vaultwarden.yubico.server | quote }} - {{- end }} - {{- end }} - {{- if eq .Values.database.type "sqlite" }} - ENABLE_DB_WAL: {{ .Values.database.wal | quote }} - {{- else }} - ENABLE_DB_WAL: "false" - {{- end }} -{{- end -}} diff --git a/enterprise/vaultwarden/17.0.0/templates/_secrets.tpl b/enterprise/vaultwarden/17.0.0/templates/_secrets.tpl deleted file mode 100644 index ca5ec74b0af..00000000000 --- a/enterprise/vaultwarden/17.0.0/templates/_secrets.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{{/* Define the secrets */}} -{{- define "vaultwarden.secrets" -}} - -{{- $adminToken := "" }} -{{- if eq .Values.vaultwarden.admin.enabled true }} -{{- $adminToken = .Values.vaultwarden.admin.token | default (randAlphaNum 48) | b64enc | quote }} -{{- end -}} - -{{- $smtpUser := "" }} -{{- if and (eq .Values.vaultwarden.smtp.enabled true ) (.Values.vaultwarden.smtp.user) }} -{{- $smtpUser = .Values.vaultwarden.smtp.user | b64enc | quote }} -{{- end -}} - -{{- $yubicoClientId := "" }} -{{- if eq .Values.vaultwarden.yubico.enabled true }} -{{- $yubicoClientId = required "Yubico Client ID required" .Values.vaultwarden.yubico.clientId | toString | b64enc | quote }} -{{- end -}} ---- - -apiVersion: v1 -kind: Secret -metadata: - name: vaultwardensecret -data: - {{- if ne $adminToken "" }} - ADMIN_TOKEN: {{ $adminToken }} - {{- end }} - {{- if ne $smtpUser "" }} - SMTP_USERNAME: {{ $smtpUser }} - SMTP_PASSWORD: {{ required "Must specify SMTP password" .Values.vaultwarden.smtp.password | b64enc | quote }} - {{- end }} - {{- if ne $yubicoClientId "" }} - YUBICO_CLIENT_ID: {{ $yubicoClientId }} - YUBICO_SECRET_KEY: {{ required "Yubico Secret Key required" .Values.vaultwarden.yubico.secretKey | b64enc | quote }} - {{- end }} -{{- end -}} diff --git a/enterprise/vaultwarden/17.0.0/templates/_validate.tpl b/enterprise/vaultwarden/17.0.0/templates/_validate.tpl deleted file mode 100644 index e4832c2f6e5..00000000000 --- a/enterprise/vaultwarden/17.0.0/templates/_validate.tpl +++ /dev/null @@ -1,17 +0,0 @@ -{{/* -Ensure valid DB type is select, defaults to SQLite -*/}} -{{- define "vaultwarden.dbTypeValid" -}} -{{- if not (or (eq .Values.database.type "postgresql") (eq .Values.database.type "mysql") (eq .Values.database.type "sqlite")) }} -{{- required "Invalid database type" nil }} -{{- end -}} -{{- end -}} - -{{/* -Ensure log type is valid -*/}} -{{- define "vaultwarden.logLevelValid" -}} -{{- if not (or (eq .Values.vaultwarden.log.level "trace") (eq .Values.vaultwarden.log.level "debug") (eq .Values.vaultwarden.log.level "info") (eq .Values.vaultwarden.log.level "warn") (eq .Values.vaultwarden.log.level "error") (eq .Values.vaultwarden.log.level "off")) }} -{{- required "Invalid log level" nil }} -{{- end }} -{{- end }} diff --git a/enterprise/vaultwarden/17.0.0/templates/common.yaml b/enterprise/vaultwarden/17.0.0/templates/common.yaml deleted file mode 100644 index 577816b14ce..00000000000 --- a/enterprise/vaultwarden/17.0.0/templates/common.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.common.loader.init" . }} - - -{{/* Render configmap for vaultwarden */}} -{{- include "vaultwarden.configmap" . }} - -{{/* Render secrets for vaultwarden */}} -{{- include "vaultwarden.secrets" . }} - -{{/* Define path for websocket */}} -{{- define "vaultwarden.websocket" -}} -{{- $fullname := include "tc.common.names.fullname" . -}} -path: "/notifications/hub" -# -- Ignored if not kubeVersion >= 1.14-0 -pathType: Prefix -service: - # -- Overrides the service name reference for this path - name: {{ printf "%s-ws" $fullname }} - port: {{ .Values.service.ws.ports.ws.port }} -{{- end -}} - -{{/* inject websocket path to all main ingress hosts*/}} -{{- define "vaultwarden.websocketinjector" -}} -{{- $path := list (include "vaultwarden.websocket" . | fromYaml) -}} -{{- if .Values.ingress.main.enabled }} -{{- range .Values.ingress.main.hosts }} -{{- $newpaths := list }} -{{- $newpaths := concat .paths $path }} -{{- $_ := set . "paths" ( deepCopy $newpaths ) -}} -{{- end }} -{{- end }} -{{- end -}} - -{{/* inject websocket paths in ingress */}} -{{- include "vaultwarden.websocketinjector" . }} - -{{/* Render the templates */}} -{{ include "tc.common.loader.apply" . }} diff --git a/enterprise/vaultwarden/17.0.0/values.yaml b/enterprise/vaultwarden/17.0.0/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/enterprise/vaultwarden/item.yaml b/enterprise/vaultwarden/item.yaml deleted file mode 100644 index d5c43d379cc..00000000000 --- a/enterprise/vaultwarden/item.yaml +++ /dev/null @@ -1,4 +0,0 @@ -icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/vaultwarden.png -categories: -- security -