From 6b2f382b7f63bfe30361ee6b0b08a9270a703ad5 Mon Sep 17 00:00:00 2001 From: Kjeld Schouten Date: Tue, 25 Jun 2024 19:34:23 +0200 Subject: [PATCH] Delete stable/notifiarr directory --- stable/notifiarr/3.2.0/.helmignore | 30 - stable/notifiarr/3.2.0/CHANGELOG.md | 100 - stable/notifiarr/3.2.0/Chart.yaml | 38 - stable/notifiarr/3.2.0/README.md | 28 - stable/notifiarr/3.2.0/app-readme.md | 8 - .../notifiarr/3.2.0/charts/common-17.4.2.tgz | Bin 100097 -> 0 bytes stable/notifiarr/3.2.0/ix_values.yaml | 74 - stable/notifiarr/3.2.0/questions.yaml | 2901 -- stable/notifiarr/3.2.0/templates/common.yaml | 1 - stable/notifiarr/3.2.0/values.yaml | 0 stable/notifiarr/3.3.0/.helmignore | 30 - stable/notifiarr/3.3.0/CHANGELOG.md | 99 - stable/notifiarr/3.3.0/Chart.yaml | 38 - stable/notifiarr/3.3.0/README.md | 28 - stable/notifiarr/3.3.0/app-readme.md | 8 - .../notifiarr/3.3.0/charts/common-17.5.0.tgz | Bin 100452 -> 0 bytes stable/notifiarr/3.3.0/ix_values.yaml | 74 - stable/notifiarr/3.3.0/questions.yaml | 2901 -- stable/notifiarr/3.3.0/templates/common.yaml | 1 - stable/notifiarr/3.3.0/values.yaml | 0 stable/notifiarr/4.8.13/.helmignore | 30 - stable/notifiarr/4.8.13/CHANGELOG.md | 3 - stable/notifiarr/4.8.13/Chart.yaml | 38 - stable/notifiarr/4.8.13/README.md | 56 - stable/notifiarr/4.8.13/app-changelog.md | 61 - stable/notifiarr/4.8.13/app-readme.md | 8 - .../4.8.13/charts/common-20.3.11.tgz | Bin 99404 -> 0 bytes stable/notifiarr/4.8.13/icon-small.webp | Bin 946 -> 0 bytes stable/notifiarr/4.8.13/icon.webp | Bin 7086 -> 0 bytes stable/notifiarr/4.8.13/ix_values.yaml | 74 - stable/notifiarr/4.8.13/questions.yaml | 2995 -- stable/notifiarr/4.8.13/templates/common.yaml | 1 - stable/notifiarr/4.8.13/values.yaml | 0 stable/notifiarr/4.8.14/.helmignore | 30 - stable/notifiarr/4.8.14/CHANGELOG.md | 3 - stable/notifiarr/4.8.14/Chart.yaml | 38 - stable/notifiarr/4.8.14/README.md | 56 - stable/notifiarr/4.8.14/app-changelog.md | 63 - stable/notifiarr/4.8.14/app-readme.md | 8 - .../4.8.14/charts/common-20.3.12.tgz | Bin 99407 -> 0 bytes stable/notifiarr/4.8.14/icon-small.webp | Bin 946 -> 0 bytes stable/notifiarr/4.8.14/icon.webp | Bin 7086 -> 0 bytes stable/notifiarr/4.8.14/ix_values.yaml | 74 - stable/notifiarr/4.8.14/questions.yaml | 2995 -- stable/notifiarr/4.8.14/templates/common.yaml | 1 - stable/notifiarr/4.8.14/values.yaml | 0 stable/notifiarr/5.0.10/.helmignore | 32 - stable/notifiarr/5.0.10/CHANGELOG.md | 3 - stable/notifiarr/5.0.10/Chart.yaml | 36 - stable/notifiarr/5.0.10/README.md | 61 - stable/notifiarr/5.0.10/app-readme.md | 8 - .../5.0.10/charts/common-23.0.10.tgz | Bin 96939 -> 0 bytes stable/notifiarr/5.0.10/icon-small.webp | Bin 946 -> 0 bytes stable/notifiarr/5.0.10/icon.webp | Bin 7086 -> 0 bytes stable/notifiarr/5.0.10/ix_values.yaml | 74 - stable/notifiarr/5.0.10/questions.yaml | 3188 -- stable/notifiarr/5.0.10/templates/common.yaml | 1 - stable/notifiarr/5.0.10/values.yaml | 0 stable/notifiarr/5.0.9/.helmignore | 32 - stable/notifiarr/5.0.9/CHANGELOG.md | 3 - stable/notifiarr/5.0.9/Chart.yaml | 36 - stable/notifiarr/5.0.9/README.md | 61 - stable/notifiarr/5.0.9/app-readme.md | 8 - .../notifiarr/5.0.9/charts/common-23.0.9.tgz | Bin 96899 -> 0 bytes stable/notifiarr/5.0.9/icon-small.webp | Bin 946 -> 0 bytes stable/notifiarr/5.0.9/icon.webp | Bin 7086 -> 0 bytes stable/notifiarr/5.0.9/ix_values.yaml | 74 - stable/notifiarr/5.0.9/questions.yaml | 3188 -- stable/notifiarr/5.0.9/templates/common.yaml | 1 - stable/notifiarr/5.0.9/values.yaml | 0 stable/notifiarr/app_versions.json | 30692 ---------------- stable/notifiarr/item.yaml | 4 - 72 files changed, 50395 deletions(-) delete mode 100644 stable/notifiarr/3.2.0/.helmignore delete mode 100644 stable/notifiarr/3.2.0/CHANGELOG.md delete mode 100644 stable/notifiarr/3.2.0/Chart.yaml delete mode 100644 stable/notifiarr/3.2.0/README.md delete mode 100644 stable/notifiarr/3.2.0/app-readme.md delete mode 100644 stable/notifiarr/3.2.0/charts/common-17.4.2.tgz delete mode 100644 stable/notifiarr/3.2.0/ix_values.yaml delete mode 100755 stable/notifiarr/3.2.0/questions.yaml delete mode 100644 stable/notifiarr/3.2.0/templates/common.yaml delete mode 100644 stable/notifiarr/3.2.0/values.yaml delete mode 100644 stable/notifiarr/3.3.0/.helmignore delete mode 100644 stable/notifiarr/3.3.0/CHANGELOG.md delete mode 100644 stable/notifiarr/3.3.0/Chart.yaml delete mode 100644 stable/notifiarr/3.3.0/README.md delete mode 100644 stable/notifiarr/3.3.0/app-readme.md delete mode 100644 stable/notifiarr/3.3.0/charts/common-17.5.0.tgz delete mode 100644 stable/notifiarr/3.3.0/ix_values.yaml delete mode 100755 stable/notifiarr/3.3.0/questions.yaml delete mode 100644 stable/notifiarr/3.3.0/templates/common.yaml delete mode 100644 stable/notifiarr/3.3.0/values.yaml delete mode 100644 stable/notifiarr/4.8.13/.helmignore delete mode 100644 stable/notifiarr/4.8.13/CHANGELOG.md delete mode 100644 stable/notifiarr/4.8.13/Chart.yaml delete mode 100644 stable/notifiarr/4.8.13/README.md delete mode 100644 stable/notifiarr/4.8.13/app-changelog.md delete mode 100644 stable/notifiarr/4.8.13/app-readme.md delete mode 100644 stable/notifiarr/4.8.13/charts/common-20.3.11.tgz delete mode 100644 stable/notifiarr/4.8.13/icon-small.webp delete mode 100644 stable/notifiarr/4.8.13/icon.webp delete mode 100644 stable/notifiarr/4.8.13/ix_values.yaml delete mode 100755 stable/notifiarr/4.8.13/questions.yaml delete mode 100644 stable/notifiarr/4.8.13/templates/common.yaml delete mode 100644 stable/notifiarr/4.8.13/values.yaml delete mode 100644 stable/notifiarr/4.8.14/.helmignore delete mode 100644 stable/notifiarr/4.8.14/CHANGELOG.md delete mode 100644 stable/notifiarr/4.8.14/Chart.yaml delete mode 100644 stable/notifiarr/4.8.14/README.md delete mode 100644 stable/notifiarr/4.8.14/app-changelog.md delete mode 100644 stable/notifiarr/4.8.14/app-readme.md delete mode 100644 stable/notifiarr/4.8.14/charts/common-20.3.12.tgz delete mode 100644 stable/notifiarr/4.8.14/icon-small.webp delete mode 100644 stable/notifiarr/4.8.14/icon.webp delete mode 100644 stable/notifiarr/4.8.14/ix_values.yaml delete mode 100755 stable/notifiarr/4.8.14/questions.yaml delete mode 100644 stable/notifiarr/4.8.14/templates/common.yaml delete mode 100644 stable/notifiarr/4.8.14/values.yaml delete mode 100644 stable/notifiarr/5.0.10/.helmignore delete mode 100644 stable/notifiarr/5.0.10/CHANGELOG.md delete mode 100644 stable/notifiarr/5.0.10/Chart.yaml delete mode 100644 stable/notifiarr/5.0.10/README.md delete mode 100644 stable/notifiarr/5.0.10/app-readme.md delete mode 100644 stable/notifiarr/5.0.10/charts/common-23.0.10.tgz delete mode 100644 stable/notifiarr/5.0.10/icon-small.webp delete mode 100644 stable/notifiarr/5.0.10/icon.webp delete mode 100644 stable/notifiarr/5.0.10/ix_values.yaml delete mode 100755 stable/notifiarr/5.0.10/questions.yaml delete mode 100644 stable/notifiarr/5.0.10/templates/common.yaml delete mode 100644 stable/notifiarr/5.0.10/values.yaml delete mode 100644 stable/notifiarr/5.0.9/.helmignore delete mode 100644 stable/notifiarr/5.0.9/CHANGELOG.md delete mode 100644 stable/notifiarr/5.0.9/Chart.yaml delete mode 100644 stable/notifiarr/5.0.9/README.md delete mode 100644 stable/notifiarr/5.0.9/app-readme.md delete mode 100644 stable/notifiarr/5.0.9/charts/common-23.0.9.tgz delete mode 100644 stable/notifiarr/5.0.9/icon-small.webp delete mode 100644 stable/notifiarr/5.0.9/icon.webp delete mode 100644 stable/notifiarr/5.0.9/ix_values.yaml delete mode 100755 stable/notifiarr/5.0.9/questions.yaml delete mode 100644 stable/notifiarr/5.0.9/templates/common.yaml delete mode 100644 stable/notifiarr/5.0.9/values.yaml delete mode 100644 stable/notifiarr/app_versions.json delete mode 100644 stable/notifiarr/item.yaml diff --git a/stable/notifiarr/3.2.0/.helmignore b/stable/notifiarr/3.2.0/.helmignore deleted file mode 100644 index 77ca5567b26..00000000000 --- a/stable/notifiarr/3.2.0/.helmignore +++ /dev/null @@ -1,30 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png diff --git a/stable/notifiarr/3.2.0/CHANGELOG.md b/stable/notifiarr/3.2.0/CHANGELOG.md deleted file mode 100644 index 0ec8f6e3cb0..00000000000 --- a/stable/notifiarr/3.2.0/CHANGELOG.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Changelog ---- - - -*for the complete changelog, please refer to the website* - -**Important:** - - - -## [notifiarr-3.1.11](https://github.com/truecharts/charts/compare/notifiarr-3.1.10...notifiarr-3.1.11) (2024-02-03) - -### Chore - - - -- update container image common to v17.2.30[@19ad5ec](https://github.com/19ad5ec) by renovate ([#17804](https://github.com/truecharts/charts/issues/17804)) - - -## [notifiarr-3.1.10](https://github.com/truecharts/charts/compare/notifiarr-3.1.9...notifiarr-3.1.10) (2024-01-26) - -### Chore - - - -- update container image common to v17.2.29[@d7c41a3](https://github.com/d7c41a3) by renovate ([#17545](https://github.com/truecharts/charts/issues/17545)) - - -## [notifiarr-3.1.9](https://github.com/truecharts/charts/compare/notifiarr-3.1.8...notifiarr-3.1.9) (2024-01-21) - -### Chore - - - -- update container image common to v17.2.28[@918b4c5](https://github.com/918b4c5) by renovate ([#17478](https://github.com/truecharts/charts/issues/17478)) - - -## [notifiarr-3.1.8](https://github.com/truecharts/charts/compare/notifiarr-3.1.7...notifiarr-3.1.8) (2024-01-21) - -### Chore - - - -- update container image common to v17.2.26[@24c98f7](https://github.com/24c98f7) by renovate ([#17409](https://github.com/truecharts/charts/issues/17409)) - - -## [notifiarr-3.1.7](https://github.com/truecharts/charts/compare/notifiarr-3.1.6...notifiarr-3.1.7) (2024-01-21) - -### Chore - - - -- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457)) - - - - -## [notifiarr-3.1.6](https://github.com/truecharts/charts/compare/notifiarr-3.1.5...notifiarr-3.1.6) (2024-01-09) - -### Chore - - - -- update container image common to v17.2.22[@e7c9056](https://github.com/e7c9056) by renovate ([#16986](https://github.com/truecharts/charts/issues/16986)) - - -## [notifiarr-3.1.5](https://github.com/truecharts/charts/compare/notifiarr-3.1.4...notifiarr-3.1.5) (2024-01-02) - -### Chore - - - -- force bump to ensure up-to-date catalogs - - -## [notifiarr-3.1.4](https://github.com/truecharts/charts/compare/notifiarr-3.1.3...notifiarr-3.1.4) (2024-01-01) - -### Chore - - - -- increase common version for oci fixes - -- remove non-existent template refs ([#16738](https://github.com/truecharts/charts/issues/16738)) - - -## [notifiarr-3.1.3](https://github.com/truecharts/charts/compare/notifiarr-3.1.0...notifiarr-3.1.3) (2024-01-01) - -### Chore - - - -- bump all charts for OCI test push - -- move everything to consume OCI-hosted common-chart dependency - -- update container image common to v17.2.19[@4ebb688](https://github.com/4ebb688) by renovate ([#16733](https://github.com/truecharts/charts/issues/16733)) - -- update container image common to v17.2.18[@085ba3c](https://github.com/085ba3c) by renovate ([#16732](https://github.com/truecharts/charts/issues/16732)) \ No newline at end of file diff --git a/stable/notifiarr/3.2.0/Chart.yaml b/stable/notifiarr/3.2.0/Chart.yaml deleted file mode 100644 index c7037baf17b..00000000000 --- a/stable/notifiarr/3.2.0/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -annotations: - max_scale_version: 24.04.0 - min_scale_version: 23.10.0 - truecharts.org/category: MediaApp-Other - truecharts.org/max_helm_version: "3.14" - truecharts.org/min_helm_version: "3.12" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.7.0 -dependencies: - - name: common - version: 17.4.2 - repository: oci://tccr.io/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: false -description: This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. -home: https://truecharts.org/charts/stable/notifiarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.png -keywords: - - plex - - discord - - MediaApp-Other - - notification -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: notifiarr -sources: - - https://github.com/Notifiarr/notifiarr - - https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr - - https://hub.docker.com/r/golift/notifiarr -type: application -version: 3.2.0 diff --git a/stable/notifiarr/3.2.0/README.md b/stable/notifiarr/3.2.0/README.md deleted file mode 100644 index 1f27857afba..00000000000 --- a/stable/notifiarr/3.2.0/README.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. -However only installations using the TrueNAS SCALE Apps system are supported. - -For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/notifiarr) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Support - -- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/stable/notifiarr/3.2.0/app-readme.md b/stable/notifiarr/3.2.0/app-readme.md deleted file mode 100644 index d2e4be1f5e6..00000000000 --- a/stable/notifiarr/3.2.0/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/notifiarr](https://truecharts.org/charts/stable/notifiarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/notifiarr/3.2.0/charts/common-17.4.2.tgz b/stable/notifiarr/3.2.0/charts/common-17.4.2.tgz deleted file mode 100644 index 31f3a104561f859f297067776ab86a1503525be4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100097 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 l8bLay74+E3;;+DksJU3 diff --git a/stable/notifiarr/3.2.0/ix_values.yaml b/stable/notifiarr/3.2.0/ix_values.yaml deleted file mode 100644 index 1e2717ec298..00000000000 --- a/stable/notifiarr/3.2.0/ix_values.yaml +++ /dev/null @@ -1,74 +0,0 @@ -image: - repository: golift/notifiarr - pullPolicy: IfNotPresent - tag: 0.7.0@sha256:5080028cabe9169a84ebfeab0d38df1496a56965fa72a1072397e13dac5cf9bc -notifiarr: - # This will be your password for your first-time login. - # Use the username 'admin' and the API key as password to log in. - # After login you must change your password from the UI - apikey: "test" - upstreams: - - 172.16.0.0/16 -service: - main: - ports: - main: - port: 5454 - protocol: http -workload: - main: - podSpec: - initContainers: - init-conf: - enabled: true - # We run it on every boot just in case an upgrade (or the user) - # manages to nuke the config file - type: init - imageSelector: alpineImage - command: /bin/sh - # This script creates an (almost) empty config file with the aim to prevent - # Notifiarr from generating a default password. - # When no default password is generated the configured API key and a default - # username ('admin') are used for logging in. - args: - - -c - - | - export CONF={{ printf "%s/notifiarr.conf" .Values.persistence.config.targetSelector.main.main.mountPath }} - - test -f "$CONF" && echo "Config exists, skipping creation..." && exit 0 - - echo "Creating a minimal config in [$CONF]..." - - echo "# Dummy comment" > "$CONF" || echo "Failed to create a minimal config..." - - echo "Finished." - containers: - main: - env: - TMPDIR: /tmpdir - DN_API_KEY: "{{ .Values.notifiarr.apikey }}" - DN_BIND_ADDR: '{{ printf "0.0.0.0:%v" .Values.service.main.ports.main.port }}' - DN_UPSTREAMS_0: '{{ join " " .Values.notifiarr.upstreams }}' -persistence: - config: - enabled: true - targetSelector: - main: - main: - mountPath: /config - init-conf: - mountPath: /config - machine-id: - enabled: true - type: hostPath - hostPath: /etc/machine-id - mountPath: /etc/machine-id - readOnly: true - tmpdir: - enabled: true - type: emptyDir - mountPath: /tmpdir - medium: Memory -portal: - open: - enabled: true diff --git a/stable/notifiarr/3.2.0/questions.yaml b/stable/notifiarr/3.2.0/questions.yaml deleted file mode 100755 index ffc2028301d..00000000000 --- a/stable/notifiarr/3.2.0/questions.yaml +++ /dev/null @@ -1,2901 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: Workload Settings - description: Workload Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: Addons - description: Addon Configuration - - name: Backup Configuration - description: Configure Velero Backup Schedule - - name: Advanced - description: Advanced Configuration - - name: Postgresql - description: Postgresql - - name: Documentation - description: Documentation - -portals: - open: - protocols: - - "$kubernetes-resource_configmap_tcportal-open_protocol" - host: - - "$kubernetes-resource_configmap_tcportal-open_host" - ports: - - "$kubernetes-resource_configmap_tcportal-open_port" - -questions: - - variable: global - group: General Settings - label: "Global Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: stopAll - label: Stop All - description: "Stops All Running pods and hibernates cnpg" - schema: - type: boolean - default: false - - - variable: workload - group: "Workload Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: type - label: Type (Advanced) - schema: - type: string - default: Deployment - enum: - - value: Deployment - description: Deployment - - value: DaemonSet - description: DaemonSet - - - variable: replicas - label: Replicas (Advanced) - description: Set the number of Replicas - schema: - type: int - show_if: [["type", "!=", "DaemonSet"]] - default: 1 - - - variable: podSpec - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: containers - label: Containers - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Container - schema: - additional_attrs: true - type: dict - attrs: - - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: command - label: Command - schema: - type: list - default: [] - items: - - variable: param - label: Param - schema: - type: string - - - variable: notifiarr - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: apikey - label: Notifiarr All API Key - description: | - Notifiarr All Integrations API key from https://notifiarr.com
- NOTE: Use 'admin' as username and your API key as the password
- for your first-time login credentials.
- After login you must change your password from the UI. - schema: - type: string - default: "" - required: true - - variable: upstreams - label: Upstreams - description: Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled. - schema: - type: list - default: - - 172.16.0.0/16 - items: - - variable: upstreamEntry - label: Upstream - description: Upstream IP or CIDR - schema: - type: string - default: "" - required: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - - variable: podOptions - group: "General Settings" - label: "Global Pod Options (Advanced)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: expertPodOpts - label: "Expert - Pod Options" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - label: "Host Networking" - schema: - type: boolean - default: false - - variable: dnsConfig - label: "DNS Configuration" - schema: - type: dict - additional_attrs: true - attrs: - - variable: options - label: "Options" - schema: - type: list - default: [{"name": "ndots", "value": "1"}] - items: - - variable: optionsEntry - label: "Option Entry" - schema: - type: dict - additional_attrs: true - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: value - label: "Value" - schema: - type: string - - variable: nameservers - label: "Nameservers" - schema: - type: list - default: [] - items: - - variable: nsEntry - label: "Nameserver Entry" - schema: - type: string - required: true - - variable: searches - label: "Searches" - schema: - type: list - default: [] - items: - - variable: searchEntry - label: "Search Entry" - schema: - type: string - required: true - - - variable: imagePullSecretList - group: "General Settings" - label: "Image Pull Secrets" - schema: - type: list - default: [] - items: - - variable: pullsecretentry - label: "Pull Secret" - schema: - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - - variable: data - label: Data - schema: - type: dict - additional_attrs: true - attrs: - - variable: registry - label: "Registry" - schema: - type: string - required: true - default: "https://index.docker.io/v1/" - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - private: true - default: "" - - variable: email - label: "Email" - schema: - type: string - required: true - 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) - - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "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: 5454 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - - variable: scaleExternalInterface - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - additional_attrs: true - 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: - additional_attrs: true - 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 - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - show_if: [["type", "=", "static"]] - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - show_if: [["type", "=", "static"]] - 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: 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: config - 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: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - value: iscsi - description: iSCSI Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
- Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: disabled - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
- Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: "disabled" - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name (Optional) - description: Defaults to chart name - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description (Optional) - description: Defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: icon - label: Icon (Optional) - description: Defaults to chart icon - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - variable: widget - label: Widget Settings - schema: - type: dict - additional_attrs: true - show_if: [["enabled", "=", true]] - attrs: - - variable: enabled - label: Enable Widget - description: When disabled all widget annotations are skipped. - schema: - type: boolean - default: true - - variable: custom - label: Options - schema: - type: dict - additional_attrs: true - attrs: - - variable: key - label: API-key (key) - schema: - type: string - default: "" - - variable: customkv - label: Custom Options - schema: - type: list - default: [] - items: - - variable: option - label: Option - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - default: "" - required: true - - variable: value - label: Value - schema: - type: string - default: "" - required: true - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: overrideService - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - show_if: [["certificateIssuer", "=", ""]] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: Use Custom Secret (Advanced) - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: "Allow Cross Origin Requests" - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: namespace - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description - description: defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - - variable: securityContext - group: Security and Permissions - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: container - label: Container - schema: - additional_attrs: true - type: dict - attrs: - # Settings from questions.yaml get appended here on a per-app basis - - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 568 - # Settings from questions.yaml get appended here on a per-app basis - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - show_if: [["runAsUser", "=", 0]] - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "0022" - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - - variable: pod - label: Pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - # Settings from questions.yaml get appended here on a per-app basis - - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: 'intel.com/i915' - label: Add Intel i915 GPUs - schema: - type: int - default: 0 - - variable: 'nvidia.com/gpu' - label: Add NVIDIA GPUs (Experimental) - schema: - type: int - default: 0 - - variable: 'amd.com/gpu' - label: Add AMD GPUs - schema: - type: int - default: 0 - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: device - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: scaleGPUEntry - label: GPU - schema: - additional_attrs: true - type: dict - attrs: - # Specify GPU configuration - - variable: gpu - label: Select GPU - schema: - additional_attrs: true - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: workaround - label: "Workaround" - schema: - type: string - default: workaround - hidden: true - -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: ingress - label: "Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - variable: scaleCert - label: 'Use TrueNAS SCALE Certificate (Deprecated)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: int - $ref: - - "definitions/certificate" - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: netshoot - label: Netshoot - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: envList - label: Netshoot Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: gluetun - description: Gluetun - - value: tailscale - description: Tailscale - - value: openvpn - description: OpenVPN (Deprecated) - - value: wireguard - description: Wireguard (Deprecated) - - variable: openvpn - label: OpenVPN Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - show_if: [["username", "!=", ""]] - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: string - show_if: [["type", "!=", "disabled"]] - default: "" - - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - max_length: 10240 - - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true - diff --git a/stable/notifiarr/3.2.0/templates/common.yaml b/stable/notifiarr/3.2.0/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/stable/notifiarr/3.2.0/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/stable/notifiarr/3.2.0/values.yaml b/stable/notifiarr/3.2.0/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/notifiarr/3.3.0/.helmignore b/stable/notifiarr/3.3.0/.helmignore deleted file mode 100644 index 77ca5567b26..00000000000 --- a/stable/notifiarr/3.3.0/.helmignore +++ /dev/null @@ -1,30 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png diff --git a/stable/notifiarr/3.3.0/CHANGELOG.md b/stable/notifiarr/3.3.0/CHANGELOG.md deleted file mode 100644 index 4d72d265eae..00000000000 --- a/stable/notifiarr/3.3.0/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Changelog ---- - - -*for the complete changelog, please refer to the website* - -**Important:** - - - - -## [notifiarr-3.1.11](https://github.com/truecharts/charts/compare/notifiarr-3.1.10...notifiarr-3.1.11) (2024-02-03) - -### Chore - - - -- update container image common to v17.2.30[@19ad5ec](https://github.com/19ad5ec) by renovate ([#17804](https://github.com/truecharts/charts/issues/17804)) - - -## [notifiarr-3.1.10](https://github.com/truecharts/charts/compare/notifiarr-3.1.9...notifiarr-3.1.10) (2024-01-26) - -### Chore - - - -- update container image common to v17.2.29[@d7c41a3](https://github.com/d7c41a3) by renovate ([#17545](https://github.com/truecharts/charts/issues/17545)) - - -## [notifiarr-3.1.9](https://github.com/truecharts/charts/compare/notifiarr-3.1.8...notifiarr-3.1.9) (2024-01-21) - -### Chore - - - -- update container image common to v17.2.28[@918b4c5](https://github.com/918b4c5) by renovate ([#17478](https://github.com/truecharts/charts/issues/17478)) - - -## [notifiarr-3.1.8](https://github.com/truecharts/charts/compare/notifiarr-3.1.7...notifiarr-3.1.8) (2024-01-21) - -### Chore - - - -- update container image common to v17.2.26[@24c98f7](https://github.com/24c98f7) by renovate ([#17409](https://github.com/truecharts/charts/issues/17409)) - - -## [notifiarr-3.1.7](https://github.com/truecharts/charts/compare/notifiarr-3.1.6...notifiarr-3.1.7) (2024-01-21) - -### Chore - - - -- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457)) - - - - -## [notifiarr-3.1.6](https://github.com/truecharts/charts/compare/notifiarr-3.1.5...notifiarr-3.1.6) (2024-01-09) - -### Chore - - - -- update container image common to v17.2.22[@e7c9056](https://github.com/e7c9056) by renovate ([#16986](https://github.com/truecharts/charts/issues/16986)) - - -## [notifiarr-3.1.5](https://github.com/truecharts/charts/compare/notifiarr-3.1.4...notifiarr-3.1.5) (2024-01-02) - -### Chore - - - -- force bump to ensure up-to-date catalogs - - -## [notifiarr-3.1.4](https://github.com/truecharts/charts/compare/notifiarr-3.1.3...notifiarr-3.1.4) (2024-01-01) - -### Chore - - - -- increase common version for oci fixes - -- remove non-existent template refs ([#16738](https://github.com/truecharts/charts/issues/16738)) - - -## [notifiarr-3.1.3](https://github.com/truecharts/charts/compare/notifiarr-3.1.0...notifiarr-3.1.3) (2024-01-01) - -### Chore - - - -- bump all charts for OCI test push - -- move everything to consume OCI-hosted common-chart dependency - -- update container image common to v17.2.19[@4ebb688](https://github.com/4ebb688) by renovate ([#16733](https://github.com/truecharts/charts/issues/16733)) diff --git a/stable/notifiarr/3.3.0/Chart.yaml b/stable/notifiarr/3.3.0/Chart.yaml deleted file mode 100644 index f04acfd4cc2..00000000000 --- a/stable/notifiarr/3.3.0/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -annotations: - max_scale_version: 24.04.0 - min_scale_version: 23.10.0 - truecharts.org/category: MediaApp-Other - truecharts.org/max_helm_version: "3.14" - truecharts.org/min_helm_version: "3.12" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.7.0 -dependencies: - - name: common - version: 17.5.0 - repository: oci://tccr.io/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: false -description: This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. -home: https://truecharts.org/charts/stable/notifiarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.png -keywords: - - plex - - discord - - MediaApp-Other - - notification -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: notifiarr -sources: - - https://github.com/Notifiarr/notifiarr - - https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr - - https://hub.docker.com/r/golift/notifiarr -type: application -version: 3.3.0 diff --git a/stable/notifiarr/3.3.0/README.md b/stable/notifiarr/3.3.0/README.md deleted file mode 100644 index 1f27857afba..00000000000 --- a/stable/notifiarr/3.3.0/README.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. -However only installations using the TrueNAS SCALE Apps system are supported. - -For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/notifiarr) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Support - -- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/stable/notifiarr/3.3.0/app-readme.md b/stable/notifiarr/3.3.0/app-readme.md deleted file mode 100644 index d2e4be1f5e6..00000000000 --- a/stable/notifiarr/3.3.0/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/notifiarr](https://truecharts.org/charts/stable/notifiarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/notifiarr/3.3.0/charts/common-17.5.0.tgz b/stable/notifiarr/3.3.0/charts/common-17.5.0.tgz deleted file mode 100644 index 3a5534883aaac1a331bf10ad166cff7fe5d2dd75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100452 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 z 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 Wm9Bh-<^K-=0RR7ge;?HVjtl_2wPFzf diff --git a/stable/notifiarr/3.3.0/ix_values.yaml b/stable/notifiarr/3.3.0/ix_values.yaml deleted file mode 100644 index 1e2717ec298..00000000000 --- a/stable/notifiarr/3.3.0/ix_values.yaml +++ /dev/null @@ -1,74 +0,0 @@ -image: - repository: golift/notifiarr - pullPolicy: IfNotPresent - tag: 0.7.0@sha256:5080028cabe9169a84ebfeab0d38df1496a56965fa72a1072397e13dac5cf9bc -notifiarr: - # This will be your password for your first-time login. - # Use the username 'admin' and the API key as password to log in. - # After login you must change your password from the UI - apikey: "test" - upstreams: - - 172.16.0.0/16 -service: - main: - ports: - main: - port: 5454 - protocol: http -workload: - main: - podSpec: - initContainers: - init-conf: - enabled: true - # We run it on every boot just in case an upgrade (or the user) - # manages to nuke the config file - type: init - imageSelector: alpineImage - command: /bin/sh - # This script creates an (almost) empty config file with the aim to prevent - # Notifiarr from generating a default password. - # When no default password is generated the configured API key and a default - # username ('admin') are used for logging in. - args: - - -c - - | - export CONF={{ printf "%s/notifiarr.conf" .Values.persistence.config.targetSelector.main.main.mountPath }} - - test -f "$CONF" && echo "Config exists, skipping creation..." && exit 0 - - echo "Creating a minimal config in [$CONF]..." - - echo "# Dummy comment" > "$CONF" || echo "Failed to create a minimal config..." - - echo "Finished." - containers: - main: - env: - TMPDIR: /tmpdir - DN_API_KEY: "{{ .Values.notifiarr.apikey }}" - DN_BIND_ADDR: '{{ printf "0.0.0.0:%v" .Values.service.main.ports.main.port }}' - DN_UPSTREAMS_0: '{{ join " " .Values.notifiarr.upstreams }}' -persistence: - config: - enabled: true - targetSelector: - main: - main: - mountPath: /config - init-conf: - mountPath: /config - machine-id: - enabled: true - type: hostPath - hostPath: /etc/machine-id - mountPath: /etc/machine-id - readOnly: true - tmpdir: - enabled: true - type: emptyDir - mountPath: /tmpdir - medium: Memory -portal: - open: - enabled: true diff --git a/stable/notifiarr/3.3.0/questions.yaml b/stable/notifiarr/3.3.0/questions.yaml deleted file mode 100755 index ffc2028301d..00000000000 --- a/stable/notifiarr/3.3.0/questions.yaml +++ /dev/null @@ -1,2901 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: Workload Settings - description: Workload Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: Addons - description: Addon Configuration - - name: Backup Configuration - description: Configure Velero Backup Schedule - - name: Advanced - description: Advanced Configuration - - name: Postgresql - description: Postgresql - - name: Documentation - description: Documentation - -portals: - open: - protocols: - - "$kubernetes-resource_configmap_tcportal-open_protocol" - host: - - "$kubernetes-resource_configmap_tcportal-open_host" - ports: - - "$kubernetes-resource_configmap_tcportal-open_port" - -questions: - - variable: global - group: General Settings - label: "Global Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: stopAll - label: Stop All - description: "Stops All Running pods and hibernates cnpg" - schema: - type: boolean - default: false - - - variable: workload - group: "Workload Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: type - label: Type (Advanced) - schema: - type: string - default: Deployment - enum: - - value: Deployment - description: Deployment - - value: DaemonSet - description: DaemonSet - - - variable: replicas - label: Replicas (Advanced) - description: Set the number of Replicas - schema: - type: int - show_if: [["type", "!=", "DaemonSet"]] - default: 1 - - - variable: podSpec - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: containers - label: Containers - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Container - schema: - additional_attrs: true - type: dict - attrs: - - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: command - label: Command - schema: - type: list - default: [] - items: - - variable: param - label: Param - schema: - type: string - - - variable: notifiarr - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: apikey - label: Notifiarr All API Key - description: | - Notifiarr All Integrations API key from https://notifiarr.com
- NOTE: Use 'admin' as username and your API key as the password
- for your first-time login credentials.
- After login you must change your password from the UI. - schema: - type: string - default: "" - required: true - - variable: upstreams - label: Upstreams - description: Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled. - schema: - type: list - default: - - 172.16.0.0/16 - items: - - variable: upstreamEntry - label: Upstream - description: Upstream IP or CIDR - schema: - type: string - default: "" - required: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - - variable: podOptions - group: "General Settings" - label: "Global Pod Options (Advanced)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: expertPodOpts - label: "Expert - Pod Options" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - label: "Host Networking" - schema: - type: boolean - default: false - - variable: dnsConfig - label: "DNS Configuration" - schema: - type: dict - additional_attrs: true - attrs: - - variable: options - label: "Options" - schema: - type: list - default: [{"name": "ndots", "value": "1"}] - items: - - variable: optionsEntry - label: "Option Entry" - schema: - type: dict - additional_attrs: true - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: value - label: "Value" - schema: - type: string - - variable: nameservers - label: "Nameservers" - schema: - type: list - default: [] - items: - - variable: nsEntry - label: "Nameserver Entry" - schema: - type: string - required: true - - variable: searches - label: "Searches" - schema: - type: list - default: [] - items: - - variable: searchEntry - label: "Search Entry" - schema: - type: string - required: true - - - variable: imagePullSecretList - group: "General Settings" - label: "Image Pull Secrets" - schema: - type: list - default: [] - items: - - variable: pullsecretentry - label: "Pull Secret" - schema: - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - - variable: data - label: Data - schema: - type: dict - additional_attrs: true - attrs: - - variable: registry - label: "Registry" - schema: - type: string - required: true - default: "https://index.docker.io/v1/" - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - private: true - default: "" - - variable: email - label: "Email" - schema: - type: string - required: true - 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) - - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "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: 5454 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - - variable: scaleExternalInterface - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - additional_attrs: true - 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: - additional_attrs: true - 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 - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - show_if: [["type", "=", "static"]] - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - show_if: [["type", "=", "static"]] - 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: 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: config - 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: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - value: iscsi - description: iSCSI Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
- Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: disabled - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
- Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: "disabled" - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name (Optional) - description: Defaults to chart name - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description (Optional) - description: Defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: icon - label: Icon (Optional) - description: Defaults to chart icon - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - variable: widget - label: Widget Settings - schema: - type: dict - additional_attrs: true - show_if: [["enabled", "=", true]] - attrs: - - variable: enabled - label: Enable Widget - description: When disabled all widget annotations are skipped. - schema: - type: boolean - default: true - - variable: custom - label: Options - schema: - type: dict - additional_attrs: true - attrs: - - variable: key - label: API-key (key) - schema: - type: string - default: "" - - variable: customkv - label: Custom Options - schema: - type: list - default: [] - items: - - variable: option - label: Option - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - default: "" - required: true - - variable: value - label: Value - schema: - type: string - default: "" - required: true - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: overrideService - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - show_if: [["certificateIssuer", "=", ""]] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: Use Custom Secret (Advanced) - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: "Allow Cross Origin Requests" - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: namespace - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description - description: defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - - variable: securityContext - group: Security and Permissions - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: container - label: Container - schema: - additional_attrs: true - type: dict - attrs: - # Settings from questions.yaml get appended here on a per-app basis - - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 568 - # Settings from questions.yaml get appended here on a per-app basis - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - show_if: [["runAsUser", "=", 0]] - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "0022" - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - - variable: pod - label: Pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - # Settings from questions.yaml get appended here on a per-app basis - - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: 'intel.com/i915' - label: Add Intel i915 GPUs - schema: - type: int - default: 0 - - variable: 'nvidia.com/gpu' - label: Add NVIDIA GPUs (Experimental) - schema: - type: int - default: 0 - - variable: 'amd.com/gpu' - label: Add AMD GPUs - schema: - type: int - default: 0 - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: device - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: scaleGPUEntry - label: GPU - schema: - additional_attrs: true - type: dict - attrs: - # Specify GPU configuration - - variable: gpu - label: Select GPU - schema: - additional_attrs: true - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: workaround - label: "Workaround" - schema: - type: string - default: workaround - hidden: true - -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: ingress - label: "Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - variable: scaleCert - label: 'Use TrueNAS SCALE Certificate (Deprecated)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: int - $ref: - - "definitions/certificate" - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: netshoot - label: Netshoot - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: envList - label: Netshoot Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: gluetun - description: Gluetun - - value: tailscale - description: Tailscale - - value: openvpn - description: OpenVPN (Deprecated) - - value: wireguard - description: Wireguard (Deprecated) - - variable: openvpn - label: OpenVPN Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - show_if: [["username", "!=", ""]] - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: string - show_if: [["type", "!=", "disabled"]] - default: "" - - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - max_length: 10240 - - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true - diff --git a/stable/notifiarr/3.3.0/templates/common.yaml b/stable/notifiarr/3.3.0/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/stable/notifiarr/3.3.0/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/stable/notifiarr/3.3.0/values.yaml b/stable/notifiarr/3.3.0/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/notifiarr/4.8.13/.helmignore b/stable/notifiarr/4.8.13/.helmignore deleted file mode 100644 index 77ca5567b26..00000000000 --- a/stable/notifiarr/4.8.13/.helmignore +++ /dev/null @@ -1,30 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png diff --git a/stable/notifiarr/4.8.13/CHANGELOG.md b/stable/notifiarr/4.8.13/CHANGELOG.md deleted file mode 100644 index 941abb8a218..00000000000 --- a/stable/notifiarr/4.8.13/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -*for the complete changelog, please refer to the website* - -**Important:** \ No newline at end of file diff --git a/stable/notifiarr/4.8.13/Chart.yaml b/stable/notifiarr/4.8.13/Chart.yaml deleted file mode 100644 index f51241076d6..00000000000 --- a/stable/notifiarr/4.8.13/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -annotations: - max_scale_version: 24.04.0 - min_scale_version: 23.10.0 - truecharts.org/category: MediaApp-Other - truecharts.org/max_helm_version: "3.14" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.7.0 -dependencies: - - name: common - version: 20.3.11 - repository: oci://tccr.io/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: false -description: This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. -home: https://truecharts.org/charts/stable/notifiarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp -keywords: - - plex - - discord - - MediaApp-Other - - notification -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: notifiarr -sources: - - https://github.com/Notifiarr/notifiarr - - https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr - - https://hub.docker.com/r/golift/notifiarr -type: application -version: 4.8.13 diff --git a/stable/notifiarr/4.8.13/README.md b/stable/notifiarr/4.8.13/README.md deleted file mode 100644 index 2821defc38a..00000000000 --- a/stable/notifiarr/4.8.13/README.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/notifiarr) - -**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)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://tccr.io/truecharts/CHARTNAME` - -For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/ - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](https://truecharts.org/scale/guides/scale-intro). - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/ - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/notifiarr - -## Support - - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/stable/notifiarr/4.8.13/app-changelog.md b/stable/notifiarr/4.8.13/app-changelog.md deleted file mode 100644 index d3c365a6f17..00000000000 --- a/stable/notifiarr/4.8.13/app-changelog.md +++ /dev/null @@ -1,61 +0,0 @@ - - -## [notifiarr-4.8.13](https://github.com/truecharts/charts/compare/notifiarr-4.6.0...notifiarr-4.8.13) (2024-04-24) - -### Chore - - - -- bump charts to ensure new icons are released - -- update groups html ([#21121](https://github.com/truecharts/charts/issues/21121)) - -- bump charts to release new docs to fix broken links - -- bump everything to regenerate readme's and site index - -- update docs links - -- bump everything to release new doc pages - -- update container image common to v20.3.6[@27edfed](https://github.com/27edfed) by renovate ([#20599](https://github.com/truecharts/charts/issues/20599)) - -- update container image common to v20.3.3[@3876ba5](https://github.com/3876ba5) by renovate ([#20478](https://github.com/truecharts/charts/issues/20478)) - -- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361)) - -- update container image common to v20.2.2[@f7d0b92](https://github.com/f7d0b92) by renovate ([#19432](https://github.com/truecharts/charts/issues/19432)) - -- update container image common to v20.3.11[@dae6129](https://github.com/dae6129) by renovate ([#20875](https://github.com/truecharts/charts/issues/20875)) - -- update container image common to v20.3.5[@aedd88a](https://github.com/aedd88a) by renovate ([#20535](https://github.com/truecharts/charts/issues/20535)) - -- update container image common to v20.3.4[@d7e1b23](https://github.com/d7e1b23) by renovate ([#20527](https://github.com/truecharts/charts/issues/20527)) - -- update container image common to v20.3.7[@8cf9fc9](https://github.com/8cf9fc9) by renovate ([#20819](https://github.com/truecharts/charts/issues/20819)) - -- update container image common to v20.3.2[@0722ebb](https://github.com/0722ebb) by renovate ([#20334](https://github.com/truecharts/charts/issues/20334)) - -- update container image common to v20.2.10[@6f99c97](https://github.com/6f99c97) by renovate ([#19876](https://github.com/truecharts/charts/issues/19876)) - -- update container image common to v20.2.9[@10fd6c5](https://github.com/10fd6c5) by renovate ([#19817](https://github.com/truecharts/charts/issues/19817)) - -- update container image common to v20.2.4[@f245f5c](https://github.com/f245f5c) by renovate ([#19731](https://github.com/truecharts/charts/issues/19731)) - -- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673)) - -- make links relative - -- Fix broken links for Starlight ([#20737](https://github.com/truecharts/charts/issues/20737)) - -### Chore - - - -- rework SCALE catagories/groups to match helm and remove deprecated charts ([#21111](https://github.com/truecharts/charts/issues/21111)) - -### Fix - - - -- replace serviceexpert with externalinterfaces/networking-group in the SCALE GUI ([#21154](https://github.com/truecharts/charts/issues/21154)) \ No newline at end of file diff --git a/stable/notifiarr/4.8.13/app-readme.md b/stable/notifiarr/4.8.13/app-readme.md deleted file mode 100644 index d2e4be1f5e6..00000000000 --- a/stable/notifiarr/4.8.13/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/notifiarr](https://truecharts.org/charts/stable/notifiarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/notifiarr/4.8.13/charts/common-20.3.11.tgz b/stable/notifiarr/4.8.13/charts/common-20.3.11.tgz deleted file mode 100644 index 010f5b5a245d342f6f0d2e0ef95338a45ead19b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99404 zcmV)OK(@ahiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ(avQnPFuK2a6)0*`vG#}*zbP?s>Xjv}SMSP_9#QrtCvQpt zXFw9sa4I*mvzT5oMXfztVPDlLPXf(3_Hk<9{cg;?(+3NNC-FEl8MzhuFcfSLTXTT-*B$UDU zyT+5-%69G>d0-e41{o$H9aI2-F~ei%v1u}@W3ul-h9)Fl3;+%pn#7`D%|`*Aqj-@o zA7BrK6b-6aT8S73xcpqOG34#2!sfl*|B29P1jDn6oKj3XxA{g{Lv z{|f|o6vKD{#v}$eae~DBrnhN+^mw5;7Dr0X5n0_d1P6zuT?cp~XFkeLASrfNiW&)0o!8i%Jcs zX6}*^GF|=i-(ENCtxmmBYy7z~gE(XmhbR`n&N^C;5I<8v z7FQUsMT7<#y~0GS?f{!e-48L(P!EKmh%5*tJ&)0_Uo2Hpl_1Op%^L1iL-@!ddt93lpw?_&@lKri!}>00U61 zRsa~oAQ(aK?gWit5-_phsfJI`7>5WzKpBbQ1RV#E(hE34fK4F-_c#c^2!VtmU+ft$ z2*A~cW2zt=!;pU_a}>u(fP4_4n12_aU6AP}ITj#_$p`_?O~p6y^G5Ji&V}>khbW$7 z4}q(gFyfIwwjp2YcLTt@B~@>9W2%~L?l?&Jes*?MfFtMbl%ddbF|{uxfN1XJt6n3% z85v?kb5Fh*@Zq2+U*YP*F&N_CkS@;u9)M<}@fPO`e>lFeh36hyT9`vV@;pQ-ct?CB z2M>xD;`czwA2o1|p#MvZ8M+L;0u*_xIY4ud9X$e;8h$)OBw^H<0_u$h#6_+UQS%!B z9AbuHaDoE37$T2^J{^E&%Y2VejEQf*bj=sln)zhEj3Ew^7~M=`M5iS1-ETAz-E+P* z)wdWyAFqR4qZGN;qmb(?K~6*D{GBDyqfsj-TYCv+y~awqr5R5|D4WEH{u%%!O9@7E zd~x+wl`dpL{JUm@%a~EFTr@G_W3yKQV1^iHj}C)6@_i~_pTBV#Hef_E4z+}QUvZWr zm#uT*u>t^#AsXYmEMWDz3@~_gKSd!35%Q70yGAn{_Gt)50iuA!z{gbn&87&9@kiu? z8TS1E-NTrd2nF?U$VpDoQqrkHq6iW#{K(CVKpZ`YPt` zI~?L!G6Ny;(G{09gwVv-4-PNXy8$?CG#a{woRng2GZKLrp$tUCrvQdN;M$25V2MJV)9=q>bU)GIsSD#kMy<6t3K3?l%AG>H+oN5CiHpDi8|445SW!%-l&FADB4 zn}QHghJ0XJz=&2BlI*9u@+fkp1kya1O@>IUp2JK*C^ANe@W{&)@{{ z=@O%eP|Sp-LNS*8`ze7lE(JtM5L}S}dy4@$8($E16(fp5#(5K*48XiuZ#L@9|3#;; z)$I*>BQzQxbiBr4bJX==$M3XS2cz-9VWZn=_fWg-!FIn1$6jyT9{JtYsM$McjXDj# z-y5~sKB`m%!pB_C|HwFYM^{(xug}#iiim%Fc507`p|6#*mt*>~SkCOAI6Y=j`{_l^Mzg(PN?}3w}!gjM{t~-i0Z}h6owO|SNvtj=jA(0XOMYQ zIjfQ=3eXIN3yB^G=;2tjc4Dmy%-zl~AM;ucozZ{crj3<&F#CFJ)DMFtpIha3U4SyW%G59a{_J5A{HIxZ%6@fwbdIaQcqH9qHw+qhef!^-?vX02%Mze@5 zPOy}r1h2h+x)MHooXiH`oe)A+wHha- z!?Q-CaS}eXO*V@j*&v%m4{gjxb2^v)-t;>do$;-Rd=TnMi!)V#A+xfu1Pv=RIKF^yQm>fgPf(FuFSa zH5~B&)LV^4v)1U;Ju<7Kk8lRg7Z(*;k#)e% zWwsUGt+SA!cr0W_&9CwWg~68*CH8Q{numv-TB9ovi;+KtY`~?wX1+2^*mQ`fu$1a| zfb+IkN|IGdW=Q|6+7c0@^q$1NDxrT?^DxdddKqBmeF4;Lo!tAXi~k9x9vAl)-&_yo z9$U2n<{rz>f5j?y0Pq(foMEpP&AnBSqPe#W(vqd>G*a^+gF~SQK3{tPK9C?05DZK4QvnIJx?8EI#SqHIJ8G8*yDtw4nylbJ}}w$27ob{=5SQ zz+4dL!mfa;4+3e*Aj4iQ9Mk81^~xkf*cJ6Ob3vnh0r4ev&`Tw?tSX4TCZ73;2{v3@@RK%)SUcWYY%En9MQXM@%>B z&MQlT7|%@!`NMqM0mlL)I3Awy{Z8y`Bm`W()@Ar!4?caCt4VCRH96O52qQWrD;et3 zSJhCpL=8Q(-K9EPXf&KXAzjNgIoRSJe_I8ww5+jPab;^OlKUtvq8Gpxo3v9V$%_ z12AAHM*gmWlEG3sE9M46N(xf_ISc=TJcfKQj>!xRkB`nzo#VjD4!8^h>1Y|FF^Yu` ziI}hWiVUui9#RL)EoWV_CyMX((s?7W~Gv8UVhbe+_p`lZj^l0FZ%K{DT1d`SWfC zfH5J=nR`3ngm{TK0OIJ%6R-e5ihwsooUbNKjHR7*z;|l^qO2Vyj?&`WWrRXWRWW%8 zXHi1Fl?UZwQcO`0?SV+OO+t!&6l*_5K8Gv@%NpFL5eX@YD*)WXn9oR;r{TZLBUvg9 zT6~uWj>E5VflxYs#Y{s5VP|KjBL3f{#xO!29%Bz&6T-ly@+%U>c6L;=(zQu?;3(i? z*zTv;n*zz^goBT885tokK_QAELw-dT=RM{NEMs@EXP@E-3;X6^*x2jT?6mCjHjgYMwwOZxxHWrRgQ2~^>@$uY6*8$WdW6^ayZmHre1M8 z1S*ptK`aT+3VjrYU4*Gs`1P{CYR=4Fhn_lY> z_B&0#+Z(ri54QWgu0KM(UJv;P-NP>GHxHUUblB^3x~*l76O|A#IwgdyMpBnFST^d- zmc_D*AZ#A?S|hL5XpWkVj(0HX^^oUv;i%ahA0G6^{Z_Nt@F47uA%fnh13P`c+32=< zqj9Ub6iWtiAhxO1XquvqQ%J8B54~o4H10OXqn_Vx zcSh}I8#NCb@UU^%Z+5z#5Br^-ci3(Vqis2!9`Tiiv>H)fwk8W3R6F%n+xo8@p#DL> zd2lf5cSnZ@opG<-YWENN2>M;W4Lg3LH}*!IgKlTk<((Rh5b|2B-l*C4#^XjCEkzXu z5f0a&r!418&E}!S5c;Um=yg%^5cv>x#=XNv+wb%`2=yDiMz`5)!p=eau+we#d^9@j zjN8pouh(q#I{ikc+dWu{A@yR&yyPxv-R!l!zTZXNai`<;$6o)yYk6(2 z-)%!UZuQ5b!$YqPyRbEC9CXJA=%A1KhY*b$O$7Vsa4Cv+$q0EYSdF48Sd3!FANzi% zchGAh-Ig^Zy$_0t@dHBH9kP7KVFLB z{RFMCxOpjO!8Gi;Zh5WVc--wEzcWJqA?l2q@UY)(x0=nv5p1=_{cgY6=ykh(hcnAJr!|!)GK5Di7=0UgL=pQx?yW`QQ z+x1(AoeuI2oBlz&)oG4c!%nkx zaM<(?M?LSbH*PkYowny69E`hu^Uxo+yRFfdI=x2p_h32dLFPZ1uek9QlVMztL`@ajyjrV7upa4^Xq)?lrw}d)#aG4;#Hk z>u?M^qu#jH_4-Y3DZ+XtHoJw`PNouDFCd8@LWbw47ESi8aL9er!R;Efmc)e7aXIv35@-R z()%9AXu>O&Q{2K{No)gc4LB}|g}~Bkw3>~>X29W?SA{qf;px7+OW zyY0h+cE@XRR@xXN)NT4L*zS#Czc)IBBiK7QmVF;QU%pREWR;Z*dlraYOv#15*JLCgMH460-k0aG#1q)Lb2ozqc zHqrtB>Gg}_Y{${Z2!_5ir%0oF*3mmAbL=BGzE%d{Dyzy2F8Ek$=(4R;h;BI`Hxg?J zw0!8U6TIsTuQ=h5bj8#fLR{kLak`cbQ1G+ys|A01-K;kcD~>fL>x#;2>QG)jY4s#g zrW)Z>tKXUI5<7(!pB?c(W8-m3t4S^X>lliiH8~}e+4bnoZSlppmhT9wstV7cB1Bry z0Q`i48DMA@ai*_VYXm9P6yLGNEVR_)P5Dx}UnH+KvWK)YA2jP?!9|z70gWwfp z(>hoeGiy}a&%Bj~Hq0{OvVp)|;JLqX3$8{ke+K7=J7Rd#Q|nl0)c0 zx92}*vTFpJJ5L#=etI7w}cwSyr^0z=f>us@GiTL0&4Y4G!uNKwd3s?(%oC$%3Q%Yo2 zO4U=x)6N?qf(U0R#&9?p$TK4yU!1OYH_z6raT#9KxkHQ0R}Wp8gNzt7 zfehWl1&B$))={2RxugIW~Wt57l4qPvkoRN;>MA8qcbf zZA@WIFDM=A>QD+Y2ED1s|Dcp)7^9F~qp=fxxdTMNt@f2slYtp{^(=EQogEI({~3q= z8W1Jf-%5Z^bs^}MRZnkgnObtMU8}0xY)e|DNM0mp_v$6Z7{x)Z_dd*imwzts<70~j5OWym9?NS6|I73XN7BCWGEMrkL zv0{;TPJI(vsC1M*{TRVeX2NnuKzw_HLoV{Y6Yl(Hvl;R+WV(p(kJlL!l)K#yxH701 zIr9zl?viLIX>(4b2iPmRTX%Si$)#iEOv0up21ur=ctv+LR~{9C12hmEnxnwQBQ1x` zQGjB?B`@L8J8#x|`!K>aKIiGa1f@nTP@wiJg)JE0K$)CQq2aJL0UxFiD3#ws5W2g*g!NXjz)o@o-616Rq?;%ca4rs$|J(-Do29 z;!dmSRQyfgA-5Z2f3)NQ&%5VhafH>JLUHU1VoG*-g0oDIFMPxn4$_Sw=)!hZ? zqgbOXbHb^fxd8^F#JfYRa6si3nbFD_LLAn$Dc`RfNV2pG*@MSOm;t1JC=}L;UI(Di zBV5xuJ_4g8^kvd4u73zS(j3KjybwOI=R>{~hf)%9gca3OXH0dYvdL8ZgxE}V_k0|S z?P>v%kW*L+$1n)M2RU3mWH2{JU4cz@v#4#^l9?iAvm)V-LR1L7g`vfi+=H=v%Yub& zT(zqzN}*ehn;!3cy9KRS6l~H<;3Ju=15tp-dUA5b_ddo9N!nssHofxg?pQNBvAHkz z#GgVQ(uYBQ67#{FVQqmGmc$qd(ozl1Vmh$UwACO+J_;Fzfjh8AzYOhA#LW~wJi8DOLP9vAkxZv*4LMq}ahY58X5Ytw6KcVibU!_W1w)pZ}Mpz}3O4qu=;uPr_ia>)`H`Nnxzo)4@CT zLzIjH?4^6`YLst}uk1OftgV@;IW8()(vI_jgGvUPJXas5j6#A}tHeD3i{-}_BD4oV zp`pt`*VN=QcZ>s6f5p+w(j*&8$4ny#r+2s|DrFcC; zdztqEnNTYyK;M^kxd2W;t)>yL@qX4=Kx=Xfw3rljZBW@MlS4nGg8QB>h|UY)Jx&r$ z$EaFSw73mN7R`#Dzq@=^)&?4ER`}HKr8#dT%%%+9p`0L-6L{F84A$JJo4RhUusi1v8yz3lz==U`({ZCv^`|X(`?I08|^G0e;~B zr}GFT6kXnjD84oaOlP4aNQVFIfHRqo*th(1PYVRDn-Fmh2{EH681Lz$Fy!Pd*7HZf zXSt(G#)1K;wmOZe&3QnxW(J+@F>QM*NE+Z6;Ig|+x!JAAo~9E`2rHcYVGVFT3Xp4Q zympOe#uB&G2v?aQ7GsaDG(s17Q|i2(S`M6%5Hk|*fr$9(Z^v|7O_$Q{K)!RFp&h;) z<2E%mYIV?sLO<YF^sv5qRK8k}V6Iu#`a z%JZT*hGJRBBn)rgpPBPxGDq=!EG!~YzR$O4Pa*SdpBJ|(I|~x3p_+zOO$$@e#h%^N zj5ms*PBrBSQ%oKCEsJ5Q#)hdQVHZ(HSusm3|anxhy7yl#zzw9boCC_S&+=Vodfpgc z^Ywz`c)j)P0Tmj(r=uM9fQb^|nxPx*E4@)<+z8j+elZ1MY(w&8M*A3fB0SwP9^GWc zVtb>3mxV>hlEu`Q-%OSR9FB?gRw;l|bXA>h-}!44kkLM8Vp8?GJD~e<64vQdo!F^z zmUYx>;3#2JDZvtLZPi;Mr&apo6((#dq;7Lcy916WfI^e@U@TIpD{)PD*>g>YgNu`p z%N_|uvA*jGs9aA|#v%L=I4d>mDIbrZF=S^JH{;-5cUT@?Af7!5+`4idbR zr_2#ELSOTAQR)r{!SEh4Z|dxF=%dtF)ujvc_UvljF)O_2Yfp-gs@)$+4BkqiNM1@H zlzw}S0Z{&RLe@({m83@0#$l9*biq_Z%nFA3GTppr=wvHVBBCIuygHB1L%K1M(GE<` z3zQ2PVICoS--D3H$czbIMz+x_uU020C-gIoCcLU|p3lN&)L#xbWIYT{b@^D0aR&YV7nDXu}uP@Z( zN;y}Y;u&;8Oj1_@}e+hEBRADIgRoDafm)NHj|&5GipCQ3R-oY2ILJb*f`rc>no zE!SuIq8c6M=Sc^;aDqeaPMUG~PQ}s5^`YWViI3`K@pP*1Hmuav&RW4Vifadlrs3y; zLv1`^1pu9NY}rnr%RI|AV1VcMfSrv!6)x2Yv$f~?Do`oNMlq^sfse$lQ<3z(aqi~> zJDbF+;)T)VQ8r&L`6Wyql5rsV+=dU#6!VEJS^kXpvWkA0iIaDZ$E2NA$XGC=d5g`D zx8mN4npp-VS~#D5npKL6RrxM4f)v$(@o*MA%Xm!x0RF9Wr2ISc3cGK_MT#B_kUw(X z&ShGae>;XJlQl|}(u;Z7A1{J=Z}G z@h;6V1kvP{PZL>0_CaM%H^4Q8Pt=ssr?ld=o@WD4g^{vltF-9mw_{YfIzKu-{ps@j z_oPbrZRIP{E--25JZ zmMyQnB;o`C5(0|DNq}l0pOy**s;=K9_u|HOrL*3li17*KU1ghk0KkeI{4=^i3?SHI_a#xSDCBTU+bIFMenp*uHDh8xZ%9o z>h|8^>Ka(x!(hWm-NRtGE?%{o%nBfR8mE1OZ}l!W$JCXocBCGo5iwUP%2*q16F2ak zD;LeXcZf};YA#bT3oaNP!o!^A1VYfk@=@3?~%z4d=Z2R$9#eC4MXu23Z`(5 zzzCtxj+MOTdz=J(j} z`CM8P1^~q|iT89)>OFa$Whl1?d^AcXdw|9E7La}IeR7kUbVtR+-(xZ@+`IUb0y zb{s-2&l@5%Fo$L7oO8+{(V9&5y(ErN$o64`Z%w%J{?4%j_&B#&rh?dAb|kJ97M3h| zR_R=UzNa&>#gLI$YUVP>JOV>L3Vd&u=1jSujrYG6|HSTZw*0zj^epA!X5wc=X0f7H zQx_a-=Mxg5`qFOL1J^u6nFpq@E1tYnVoy4mAaTnwhhBt)zh^MugUoojQ2@g`mEK4l zHt7|TBFkuDtUy>0@Z$aXdEJhTy5Ux1cO-b3zMfncN{zH`M~T?O|2YRH7xU&Onik-T zCYeov=}fUVgfPwyqq7jRlQ-J0(n{bc zj%@Pwhl3S%(~k^^IK#hKeOHOE${ufhfPnIyQYwP*YBCY5TA{uo{yX_8Eu^YtseH8l zCqXernX_?u#AH6DT!747J<;UWgWeR~PBFU`v#6Ttbv|32E69oeN}m9A1=Af`R1NnR zg1G+jt3;%_o2ty;^6JCW^V8!Spr*yGR)Svba*@@CBFcRa&}8;%iePj*3hpRJc^B++ znIiZ0|H>4N5%hNjEYU~sc$X2h(4lHT*?a}+Urz;yh=7SEVm;qNMBY z6(Fvay9&Nm&BZ$vdhzP&?B-e@Ss{NHTsSA9Dshs~jT|GCd1w4a>ninC#kvmOQ#4M3ObAbQZpi37JLLp{jyeCn z5d8b5?yiz|Xd zCT0tsITKgnV}q-TKrK{$ao_6x*MYfab!WS?UlrLVrYA#-+J$`mFDGg1)hw*08WV9y0Q_71uj(9)ll50Irut z+fG{*65?iWQ32uZD|IE$zI`Ko1b$Ar6auBsq~8h*21`KMQ1KxXLR1Q3I>NHxQw|6D zdI;$axkKr$nX{yeY!W(1eu?vSp&eV?aB{v8CUHQy(itTpa8unMsUib;VK*=AHS#gFelLqP zFDntZNAZs5Mik2^(qrKSYhSNAf7hLoCuE5_un{*=h+ME#4?5=4BqR)}Y((#`&xbn8 zhV`Q5+waL6uCUn-Ylc5CgwU+2cy>wxscXF+P9jxtvqXvsVONEvt}icd9zjm{XmTp@ z$a}dSK^|H04^AF0z~0@IB*J6mffTZJzsN#+YS$?V;)i#d*V=4%ImBZklFv8QPwDn} zl&~r106NyZ8j=?z&$$u_0lf2ine`_fD-LT@r2=p?M1sptd6p1?l9p|AqW zrK`-zW+J7ppb#+#I%22t!~W;bl~12)D(xYtGOs>w*5zERi{|QX5LQhU|2`cw0S2!@ zbp~;0OW-m1Ui*&8nOt`#Z@Rj?WWEUS>jy${@5fhYl-E}b-!#Af12|F!pp5H(DvCtM zg9HTn6bKS3fV04%2`8n6>|V(Ky~*)5cnv0qSz?(F zS%Rjj-|~8t*VE$ZW@{%+x+j`$n*8%=NFG2LT9BcU6wk>eR_E+tkuW- zL@9++Hs#Zhs_Au7UAk~oj7$Lu)3hsZO^r%5P4OanTNv3TkzSYS1|Bv-I_hcN5z^sH zg(IXst}{Zq-6Gniz!Yy7vI_4LrO6DbI}S(k<}~N(L6ICLR^icZD5UCd!EmKJk((TX znWP86{jpm(qLqTBccv(i;g2Z}iNlHFkT{%JvKn5WrQ)+N$z^QPpjB2=F-p~u5=N;= zQOqcpuu9ea6sug1Sz2~!dQiwNOGhooF!M`zITKyNQO=4-wRDQE<|q}jUd|B%G=leh z7oS3z;9K4$!|a;KG?$%iY3`FoCeMA!{{GTZ_t*2RssAbA>rv|8D*dn3>F4ynW^=3m zy~rc=zpUt#%`l+c;&4b&%#i<34bIgz`0`7KS<5?|2NeJUt|gi%>3lG@jH>?hX$>h( zgnPRm#CEKBjC&LqBk1FoZdAni=u~|#(WJ=vVDIE{xTv^;T@|=;?jmPN3gNFK!Csf z5eJAaC_^*-9fk8j#gSfA5{u=6pe~eBdb#YTtJg&)U-L`YFMukXDfIdCAoWs~{T=+8 z5N7Js0OHb?v(=3u4nS4i5U7(Dae(_0fKDo+R%TJid3BAAPuN(O62cT!1iae=-_Hg4 zY=`emFXwL0iW>g>xgxV|Sdit-^OC$qP0YF?(BfmYR^zj~%Kv=Q;;5>YN&(pX7T|Z| z%2M60W_$akx%bnbvi)CYFnIFjzk2^~_S@P0ztL^?w)_7}JkPlQ>nXH+_g8s=__k03 z`y(9gi>#D2Q1iq;G(acJt9CiBXZcFJW`c>ayDwDq<2 z$%pMvtNFia{juzSCI4?WyIKC9rbi#%WL`JbM44?O)VU$|fD(5+}2{92FPEYX)9 zxNXg9f0(C?|IedPi2h?dnZfAsy#Kq^{J+s{w9@>)+3$3^TmJtNkCFdX(%>z+sYTAUe-ie!EtGB_x;OYrKd`Favbp(=^$bUFaP*9=SJEHuQS&*i&L zR_<8~womRu37!A-AozbArnhwct7{aFpJ)MCvHm-)Mn7x+Z*2AdmwC+kS7W^)-Jh>B z1#!9hpHa0{9ieC&UBAS!i?^YT09U-IT+FUrfY)S1NLlWBZkhFLG|Z*e1V_7inqgr> zmV*ad3S4_bw|DRq+kyW5?&pik6W1F;Wmt7C&=LVGB$VMNdjL`}gA3rngo=p4QGjMt za%mYq=VQuZLcuGH0D}RcyJ=SmSH73m+t=~O<0*`pq8BiQYhd_~;qAN2llSMRw!Rue zY5xG=TI ziC0mKLpBE0Kh5|4G_P7vo`XCW$dAuXu1mhsxyQfmX3Y-;SQRFVcfB2RI2NFoD^uUi z+ASWAMQ<4v^WG!z0N}^7>(gJ3&d<&8=@++`?{D5*zP~uR9ln2aae6aUhNmphj49=N zoAjQKU!V z)XSoQcRv3PW(j5QL;P!coNmu9uHN6=UR_?R5%~|nA*k+EQ^0df+8t)SGWD7+wcUxi z7|yL(k?#a*Qz+UJToH1$eN;jJBBs&W18t*R#D9!gbUAIcQBo(@UysCpC?WbAewNDr z>aM8gmj4^gc3%G9`v1Jh^NjMpnmrGa|5cr>{J-wW;YQ{7l+tSb$S{5YAp!PE?wHFQc9lCXa<6o=2EiWt}ox; zoZf!=ByQf3r9smk$(D#z#r<8W(JWPH2CqT2nvXtupwhNfVFKBiUQnzKb~7?w7Na~# zA4UK{^4=3@ULX{1Met`8!T(r>?CtZYXQ})zvxq$H@NbRtzjh-d|2KR6-q!yAB9D>( z^|iwKVoj5E{!zz&vU>U1pSa>%91^Av-SWIm;j`p0?n{&Kn|_wAe{(tY(<}h1^#5Kv z>;Khkx0>7a{}PW`|2Nr-$TwgCF!Sd@Hh`+Bru=RHcy@ra({n=OeQ}ARaDO(W8WF-C zV=-7lCOaVJf_>E)Yh`FQ8d*bw`)cj8M-|PKChvp%pcRBwhnuNUd9*#GB38l>G4S*I zH>bD5)8p&Y8f10O({L>W_bI4czQj&I$8^g zo%C5KN5{vfS2wpO7sGXs@jMiV zrdFE>1d`1qtxBA5XiA{)XW4Bs`77d*K{pR}U_UQVpCQPB>;$Z}WXhy=@ zg2rx+&d!I&N9U&}&(SVlICp4aCpuqrKcD`ih-_Pv%lal49SD*#qCFrKq`2Le*KC%` z|MJ@J=hpwb?Os3Y|J!KwxAOl>JVySPV+~&E3%9sL!k3Qnmfg)L0RV^c7DIhc==xfL znpFz06W=j{6kS0!U6MN{2SwMZg1R`FNoyAJu4LnjTp`X~Rr4rRC{*$nSxMPaIkL&* z%GE}{->+6MLo=(3taM$j$t$pg|8hk~DnPz%yCE>_CC_?)wufm_8;SIjjzP@A7>67Gg)ngC=7A$CcZ4w;## z2AIT4Y+QvWF7m!=b#o#gRWYTd7O`xCa@|JE6y1Q65yHGGpLY3%-L;bso-eLbwy<2K zFta8lEedKHGN$I10+JaF*N;%_Wum)PJ3_mblv6@QrHcNeta}nOu7ReK0?eaOGVAiDB9eixjo}R=KRXEvNKj3vPSXUGgl~|M+M< zQTbb~|MmN=Zub1Q-P-zpzQ|J+|IZo97m54VY);FjyqLZWu3E}YYBmjYu{^6p5X)@R z2>|9%m_PZpH>lH0eo9qlMdZJG5MB`RZ%=9zxU!s^Hhe=As~Rb}nyZ@Uf!3pLsS4s~ zt*eyKWi(8peNn~}Yk$iUQSn4T47~UP*8lxzs$)gD9qW?d9fjW)7FrRTX>~Va;S)&KWG| zhmzLL<^mw=5OR(MdS?*z!)9T(*!dbu%rJDv{0AdBzL=ddFtyA5~X_O52 z&U+En7ZG3Hn~ldH2{}4$Zkc?d8{ymRWVjBte|Ku{V4Yw#O-7t}MP2~=n9>B%{e$Mg!IC8RX5kV4QrwtIK@}#9 z2sJzHxgc%|trp!6@vy-ybVT|(hu0mX#|*NHS9zvYQV`Sib&~P%tHiN+JPQd8{68EK zSI83&WkK0JrP#8#TE?(mO86mShJ)%-Nh1aRLBfWqDV(CJC7_m&w#@MO0R4Zd{l`qz zXZ8PWck}VT?atQz^CHhP#{U*Fx|QC)rq(tFxF`l#9tGv|`K)r1g+V~>uVOsM0h*vw z&SlhPp!(ctx#R57`;)Vq+h4BFZcdjt(+*E>-k+VgKi{6cWN`8D^y=vP=;rcz0IGkf zRscA=x;c7temcB;b9DUk>BY$aRKqcQKu#Y3em*-tAO3Q7bNtgl-Q`mn@7WOtj=6x$ z$7lOVg>7y&cC@oz>}aPfcGQyP_Vn+^=kHHWPcBYxe!0B ztgUmj^UVd@t{_;i)bY5O6f4q7Z{ugT@w4kZIr+~EAf+2i{VJXn@?WdpYGlvv01qOkPHqkSL@7g6Ql$bj1DUG_Xu=EB$`$M?gR8+wM-~uWC zA*4|BQCuG`EQoxMtXFJ3zFI@!9>%K(_M?lM3CtxsI6?uHh2-Cb#b6i`Cd49D)_GA_ zK?JjklKij2A{-|Xb7E1HAt<@R;FUCo!C+U)*yTcYj?#{%{k@{1@I%*sI~%7Zo+#n` z{QS96tJNwn!XLPr%7w#uvvP++f1swwI~Y}Fh(SL^0GU8$zk1H>Ef~ECr2AevX#zZ| zYmjwQp>f*lIShhx zQQN`P8Vz=Lvr!xCz?4Vv%SaLECgmTye9wyUO!ZpL`tp>WE zk=R^4%eO32iBfF}jQk60X?u04Xxo9^4aTlW5&*tsRD+kJbxZ@=iiO(WzD9=uG45%L}}-#NPJEuTM@#por^1`2SwF)!FKQFYyRH??ept5V1{YfIf-> zvY4TeePv3Z>E)VgpjiT6LJ>5LKT#EgQADjKXh`ra=z<2>tv0yT2ES%)(5%&s>4Ve> zW(HsenKwO8iQUUFdqM3aBZjDK;AvepugAWW4*N3t>({2ce${&Gi|edeeKouM4?qUH zteX0zRMZz&ProJA^m)|MFQ}3hs-tVoRrSi%Kwnz>>}_*$f1^*S{%^FnryBrP>i_Lt zF8_aPd;j-~JW~HRgZ;-g0N6RbrUk(1$rmsInASII12AB}2_t|Vf~^%`YX$h4tpH}G zZp{E&Gr-miur&j0%>Y|7z}5_~eZJ?SGB{d13 zs^%}NnkOTQn7ZWv`hJWkMQdusW@j_?HYoh?<|7ibhvFjYdHh+b&kSYb1Wo%5XlW9+{(fQNKH&bxihiLY=_;TN3PmoaSGnc<1CW zR1H?|k`anS#E_uAVg|J^XP*@G-3p5T4T7Sxq~$VmInU?M6(y^!C#6v#3vEzTYsrg- z6!eFoVSa58m96RSzwRlM|EDCzzmbr^;EMQ12_qse>GRzG-)ZFXe|DPN`#)dgQTaa| z;a*75hyq9f1fw89LjDrj*X*Pa3GAVn7D|SuQs#y+0$z+DLw+Tp;@WhP=!nlW5a3Y^ zM+d2SlPOlssQq(7qtsDrA!@lX~_-;E_U+`9YS0J0LZZtb;`^|@GrP50p3NOcN= zmg3UIj?%J-F6+u3>5jqB2d`A`G;UQ+#LGE~W9)O;QbTcHr?n1E;@3|4#hOUJsJ|?M z;Yb5niM?Elb&{cSD%Wi-uDyQ#tOWa?in(Noh_8_?5baG?LYp7V3UTJ+Bp@Rgl$5zf zB6DK>!hBsRwA+Dys<8fiQsT=C)tPy|5n=i{>GNFTbItLA67%{-aNlb*R{4PoTnzbp zxirL$=W^OguKhC(eTSH@N|v7FwH^ssOt>~GJx=PtoRQo0lmhRr1!tQOm1a1+Mp1x0 zNK-YP_fGYussuk4SF-P&N^MmMu^4*}eepPh=keA1_Y4R4H!%`dDE3gu-~{RJ)quR- z@>->dR?J;zjkZn!k`7*!m^ZS4qdAJ<1UZcqP-_(ySqGTHuDnAt5-&E{o0)+4m=3Lh z%cnn5-quY$W%54`CtOc{f&6dHX0w~i|JrJ7<^LCXgoXc14)!K2|7zZRWuE`4gKOIO zO&>OH-KTR;7g@6Do3)p^66>ixb;Y(**ZeD;L6NTxMyeLyv`{Z>`C6!V0pO6KNvuSX zv95=F?bRsdfn3xt?1AZCkLG3tet z!!p-PFPXjx!$F<5aTEmA9O~s{s4}mnQCo76(8^`w%&EGEV)hP(aI)M2UAlhO3D_xW zm&Fi`@!eC~6xZM8X_cjvWa48n=<@X*@JYxt3!IV}int`?sy(Sok{;GO4eyEFE78i; zRSGzq4$k&8F5|7feh5{TgUR)p<7<{uAr90{OG$v738Zc_nPz<> zri3zTl}`Rsv>~_Fsrc?}MXAe3_%mfJvdU-#*_7t8xk>rs`)OT#=EMh@@rFd!k@ubN znQkxws{2*K)E=Lq6wvhNJpHk5^enj-$!-*Ly4WcuGE@pAk~YSptxMfQ2<_jABoPo zo-zAXC(U|>1iY*{6?Oq+-D|F5G{zs7KvHBGWN4w-NcOe6U)d3G_N(+0k(lK{01zg# z5sGtQcyX|Frex)6Ie#JGf)XBM4>EK{X@X)dOh_Hc2UuR_e?KLGkqq~^o+ZzF(vqRL zH7F&_S`pus$JQ!TSC^-$c)}ph3b6liZ#6@ZdxK#;<`{w2SU_uk@(Ub9UUASOB$GMu zIRdU7k=pu9rhxML+EK`R#&P8RcL^^^tS<>kB!P^O9wV3Z8kpM=4t53QSe9}upxHwu zOTCot1Ke9M>rSCu*qrlCxtgWQ=X}jFJ!19z^jzM?g9o_0_lF+QLg4FTO;eY^px3uH+A>NcWd1L z(d}gOzjoW({I4(bh<#{7cYl0+_kOH@=f@Yi?_=Y4eS9PLd~EOd*!lv0<@sDTdB4Xt z5z00Z$~F3_3?6F;2%f<{w9?v7mp)I$}+75ZPh-Ol*`v|62Q z{O`*=Lf3n@WUx1(7%rPkU-p*hWj$YharCO1>)a*13P$nu(yMB%x^a4G{Rdw{y?ksp zqEQ#6H1%hg@;_rV!IUZFv+e@RdipJB$qMhSro7dZUsO}Rm-CKlZCM>2sMpy8BV9V} zEM6{csY$K7W_}y^`Q8?YSOr7>O$c0H*;6L}DJQHW#-KNyp^%;MEdW18{9Bp-t=G@S zf3{k^?fu^`@(7XcLJl^tqYdnEZ$bcEGMm1v{I|5{%LTxdRo9UKR|1hI|FXXPTUW)} z;;^2awsZ)dOHAVenHS=^7kcBAWOh-G&9@+!EgiNpaqa2yS4KqncBQcmNmegHj~6(R z(2G1X&((VW9Z=(hv2hV+#r}Uq0_-iGHUC?)-RoxazxF$=#&-XIiAUsrc$3QV;Ot9s z_|;kaS{WPEyop4`>a!$VNKMTLrd~+Z-AodOJVX4Q?BH|C73uZp0 zL;Rhu7J_h;XN32-sNk-kNm0w%pEebcVCc5umnF(G33oQY4sv)fhN}*L-22x|U2Q2hu zf=8ZI61oH~|IXNg3(D01BiSH>IwKi5feJ1?hP;>Qh~Q|H|6&lUdsmhFv^OYevJ6M5L;~)yqE&nG0DM6(~?tvIW}(4 zQvpXZJL7UFzXP?o*6OX->+WPavxO+CeiZLzsggAzGUm235qh`X(6$@ec0=24XkW*Mw%yPE!28+8 z&wH{@+4)a|Vu~q4A^SjrWcH*hfL6tS_FI|z|67e_r@1}s&S_bz(AxK`?^eokEzS;a$s0>2zs?fme4p^v@`$;!s@gla9%fO=Yst zsrFwNlq^>=zK@X?Ks-|?e}mURgaXA2P?e}vLG^?W6RMgP-0IQX8}i|KSg%Eu%vnP! z=FEQ2v?DWb)U(+(K9y%;GwwRssq+vYon_}&Td(DB!fTn!tf|$Y(6t$?T#Ty!r#eN! ztWKx;uK|CyzE?J^}2smHK~=F-|0Dhh zrg0)>{+q;~pvPYYze4}(^!nNO&qlYi&HwWvk5KO-;`?T>M`Exyq5|gU(3jN-izf9_ zC9$N!I$C2%)#8xOlESMZIg6@2IDoTol%6XfK+1tO4&W-^__yHye?@#?@dk=&+c3>P zio)}4s0wF%BnbCCe$A zO|-l|3h?9m5N44`yEep`r*kaQ`MO$n`FDd^eMzg&aTru8 z|Hqibm@R}D_^k0ijdr`4&Hvf&G`I1;FY-wFUk$bx`;AEcF2FA=^Sh|5koL1h*OK$o zmDUrv)8yIMaf&J=PY=|gLDmIn?SqmOl+1Zax`o%}^;VxTP;ZL-Bq+M=<;vwj--KGA z5SB}5s}F4Tffv;Wgkd{I*mHt-1aUAaKDI~R;teu6aC-xl*)f|@1^p;cN*PRF8_Ob z8~^7GYgj{qDxvVSHIGw z){@30;h)QCLm&bZHYG9stvJ*6r%%@T{a6y?ngpl{s`8)I5wN9ZdD5j)S8{y~Z#lp( zC#CXr#~=NjABKLvKtf@H^(;K;Lyk6L~#%E>q{~bquDRX z(zadh+vWbk%bf)18jX2z7~!`uNunj|t^&Z5ck30)%Sbfqu^@Fx`jO|6BrI|cek?Cq zuXTm&f3w0|s{fIMJt^qhc~YcXz!xQ=08#+KD3uwQ zYlPQ)VyKM3RNns&V+6byL5BPa=bP$$LQX9Z;86_YMSZRG!D8A~jkjAt247La6j+(I z_fv7wUJC`3rs^$oy|XG-!q7VTc}2l>^YVV$Os?cl8%ge)Mkb%p*L*64ktL!e#?LtP zT`KTx$vx};>E`C@+D-*&ka&xjm{%F^t{LCP)JC!=`@8^Vu6?gc3}pdL)FnH6!f>EB zrn;(KutO+m!CU5DASYw623yn*LsLb!Odr!Ju?uHJrt#d&NPjP#AqDN{ z=So4LmGE=3Ck^C^#LQ4E150LRS$mv$>D*}3xu>~Fj#R0c!0DS+eqGl^T)|xoe~P_WJ5ru7KU#H@iCW-)@e}Kb;TDKD|FNwd}BtAr8PRJ&YHG0SJVj zAduWsEZSFpqPtZG)^2LtK7Y1~p3`2b!e(Y{kp}ifGHkm{ew$f4LzidHs9mHLZHiv& zUq!qAF6tZhHE=e$GzuN%qiPYIXeX^ThDdVVux+rc#N6g|fmEX$BRUr3NQ_`%l z82y^y82NT(8?@xkim5Hbg}y({f#BbE`I=?A3mm(OZpE(HRZYny`0)0erRydbqeui) zT%<5^UdoJ!ZmHjaxmYC~VN`6=DPh%1SgylY^(2@Q%0wq5T=O$Exl0Pm5-O+I@;RCL zk+KV>XQe!u5T$Bh1id>H`g#t#D*h!^ou4D z7XX&E$VCkyCCHp_w&Fd)lWDqY6V&C~Y#7z&RFZ^O=-1M1Js*-MGu_#lpnj&)N)}9w zg7~>2tehXtpI=%#-9FF#l-YkM^5Q3?d`La3{D0e>PR9PzYqYod|6b$~`s+{(_9i?4 zAvYuG6`4QJTZ6; zs+SS`H9@In)J+x6S%9ES)k87EW9&g~#Bsv24b0b|n$GIQf|TXXy$d7P0-nJMx=Mmz z=yZOqR(#^!p;%t8_aCY+z)UxpYp)!7Nzrv2awX~&Ijy*o>i~Y(vF4ZZc~HdPI^u3m zK40wQGwtWk>Gl((`DOSjz?5Y;QI2a!JA+Cy?(t8Uf+>nc#0>O(06~cELBMxJu|+^De|e~}5d}b5bY4IMkY2M2cg|7vYF>`#Q z5oV$LFpr0a;y5yynv#8aIZyGVjth{n{ zs^};VRykJsMRBY8I#=vDuF&6Q4~sD8na#9c5Whm>5O37=&hvg%&gW}y5sE-!d-7tf=gl{Ios|Q ztjuLzBoXoJPT95lW>DSD;`+-Jg(*Za72$ho+#=%dfia22h9jH{&#v|WC7P8}a8E)8 zSiG>o(R{f1?327e0pd+$yRB~Q5z8+V0PJA2oB5S4F9q3b4PmZ#dsXG@vbwvQU%q-~ zzc%ibXIIrVS8ydyM!^O!Ra;b^cmUFS6a?uB&u5d%MzT5bmZG?VrD)`aj6~ol2-E-< zAqHH`w8pl|DT9&dC(@E@7>(8z4*)Q4_>y_@-PYd_j#Aa|iL;+#PL4GduDaZ;tkx$@9vrG;{2g7Y^i zJRY%1me`}pxQAw=Mh1Ks;w*+}jPKS&{1Nzl1J=51AbZLDDA|Tq)0hL-VG6wVCKK+j zG_gHpRtv;~6o41S{et+yui;U6ho7FudC}`zbn@r7&Dr4TiUS7OF%aRkI1n@F5Ckp+D z;E;)Wn^}&H+$4E8I?sX0m${d8`@GDv;`~QNWa16_qUC%)*S1V!U9shAd?oc{~qqtJeJ&n?2XS}FMAM=o- zDMRMxN&%BKg{cO=A&Z!v++U4lY-?%yFYr|Q{JFw8fmrhCrK9*lX1OdY?9fymvu;8T zE8YJYWN4fObOTP{EB60hr_;^u|IOw${{KZDx&N!d9&W}7+(%JB7Bloh`@SeDe@m}x zM#{WDY(LlCU+ps3xN~(m!B5Lz4IfVEows4E? zcKhCL-(O)4-l7#de0(n6v@`6A`~ALv5wYwTHDgFpv4?i!5coU%#$egSf89YSoFALU=lN$wjsw`Ce=+XKpCGkx@(kbrWUzDnbj)O3 zlcVYxyM(i@F@O)6yem2IMjJFoQXxa}7<%Z6_)j~ef9UL9AJ-^@+OqA*4)qt#|X-tf6k%*r*-cl z)liZd5`ZWs+3TA!4ZU7je|40$-kh>otA`G6d}!wBt0|?#))Zbf z%@ecB>UZ$}v-j@ZZR1Fy`29Pd0*60m$I3?X+n(`k?p(Ly?)L4(_S#PR&StYYGzm!@ zQv^dma@5fbSg+c)+R22$UG9UT(XCKK6G)d@sfrTf1sQM;F zDkslb9v0yU5?C;ItMacyaRd1L<@uq0e?Z(ByL}GUCX5-HY+w?mjLGCF{ch({2Wz+B z>(?6VCBOC48-=& z$YO9+^kk<;JbDPDsQ$MV01V}XQ;>D3D^t+3_sv=8zkYqf)-^;?P{TjVjR$#UEFyxn5JesRjsB$DwK(=ZEr73gc0N z>CXZV5=;tzx*2Dl8%*tcI0+SauTDXK7>(llkn->Nyt5@p@!F2qAWOHrk*77Nxu0qHSZ&F2QtX#ca%|F<{y_E+-XQXY@|$7aCdg}`sXA;5#s zG~(b??g8GaGst!i?krH{Cs2J6UsbJg7O3&Bv&z$YD_N9&J}=MS z8RoY-rVKR^r*&d@LFi^aBS+Utpj+%yA^%0NAl*@zg#%b@e9!{f&msgi`F|eR_P_0| zorB$#{I`sU%XV6#f(6KZMw*1jl=t*`TPx>T1>4AXR+T1$pI+Rt_B9BEPAZ*6So$2v zOJDMa#HG!S@4>!D(FL!0KXlwzmcH*?0{mVreLSVpS^a8>GiJ=Q4_Jrx(drOkqNU%I z^3&R|N@Ozb1&N$8zrlOni7*|YA|b=kAvigHd3D5P>f{f22)6h3**=egQx60q7XidoAD^^g}oQdZl)>MsZdjGM-e3x8w)Gseqe7-82GuH5G^# zpxjE#FIs-c^~Y(N30be5j3#Sn zi*s>eUd38_6p>F@LoAu^G)qVlrpX_$DxYI=1B;Ab+d6y!0@Uvt!i7!x$oO0blK zPJ37592RddEIg3|){^X^Kve$lH&MVbh8J&-eO2=UrYMYGB{xM_g~45zUQtR@aZF6M zrVN~uh_EUe6g)qOyhui2asMWdLjtcz5fV7KXJa+aFeT6=!7vUgtGtF}h+;mtcL|Ax zXkxAA6b)X%31nBNgCy%C<7*g25aZV<=5(5(Cr4UMld?w(gQ@hP@D>6*E+Dvt_ZYxW zbU1Hd9~DsM6676WIV$n^hL`hXsPsk1h>Z29Y+nA{a*APE;<-PCiLbelT4(KA)XLA^ zsL)&5wI~bE+MHyuDt1DfX5C8jH&2)OEEs6@=0~D{-0`&)@qN|mP+&P+`CbJ-ks<`D znz47(HPtJt1dzizp`e12vp$erLLlI;EwP&tilGympEOJtZ9NbT)xeS6nHiq1V|CiT z)-45qW6dR@lg`0Pm(s&a&yj20EzlV5XLo0AYYvZ|kRsCRElBgeqp- zD|LKTMOyF+6br~^hGL&E`@*ecG-4lic^dV~zD~=23He1u^;#SlfqJGOZM9~8w1ef; zXZU5J_n3;_R`%X%$6z@dG})a3;1Zj)PHp+#&k4PdYLGsoOY?P@WCUiEJAvPmEJk-8 z=HnMQlTXJ~RXi3hM?RErk_}RL=5Pf~8*%iFw(KE8G1RaZ$Tv*9vSD+!Stx1crk&bS zld|C}4eLc&W{Meh!IdyjYGD;K4f8B(eimmcavht&S$dv-nmNU4WI1oTJCckbj=~hi zH$fu?bdNsDa|+r0>;u&vj|mIojOWEcfazgWw|fflx0Y$ERU`bfajDzt3i52bX(@tx z;7avmmRL73OZrbdq>YUv@>KSBd?yWq8B^YVTz+O5TvUQZpN4fEwF z^jKa@X|?Q|vV({oDYHn8wL^)WijjGQFpjG#QFBk<15ON#eL;%@sJNmfrFs=2)efR+ zts1}j;J@MT?;W6vsDSYY@%ck4zkAS4lN+|C=tQII>P?n>)G{V?`Pd{k)1qmx6R!fs zktx-uLtD8LaHR@#Xevjo*Jin?Yj)kKw-z}atW~N&wslMZGX6EMkWV7heY%a+SU>;) z70&}9>sxYLI{=!59GJql5-Y@NYs@u~Pa>93e-7G8Sk=idO5uJE@|8do1*KLq4H0!P zCLJyH;!#LhVppF^BT{5CmLJ+W+TQlijb@+gz9 z!`#EwJ~Ca+3quXAbdgy5$o*Zrb^*vjLQBoB$%0;%7Q?21*-zteeypx4d@2OW72u!=*OC-oipfk^vP=IiW)HjQjB3>&`T%j3$R{lGF>V-cAw%d(`b}uiV>SeCbW{> za?=HA8F=WHRB9fX7Q2Q%w@?TwAA7gZxP;9++WjbcI@30GgAl=_;4@C64LiB;cz86e zcij!Br-1i#Kr`j)DR&>O6Dfu!z6FfX1Qz#mVq1b~%Ae^XHfNJ6QI?$e^O0-2&MxTl zMCQCN1~c?U`2H^(-_NV-`rpD+>;IV}l+N$|*?9kd|G@G8+}zw=`F}3s`P{<)lTU-C z-2dTCIro2Xmw(`!bKU(PIc4wjMP2~X(0UYa&{y+mkRcj8*MD~;~rvpJ_-p3mS4v%I#v9^VwN*4hFr z@y4wGvl-%-U{rS(;GfW@KK0F^CZjdoJl$Mg+Q!OF(}No{&LY_`{q9WxB`V7Ax~hvI z%h?eC{ls}lNRAITHlh@b<18e}1a|qli%~Ql!HiREW2?8dw-KQ%gAx6k39Csq*!cex zVqGKoNEeBuSjK^_8{tf#YXmw2jka`n|D2@><43r*MIGLoHg#5RHoN+Q^`=_+A4fwN zk5d@`G*=*i2Kj$)>tNT7|GLWmw3Mff{I90Lw-5+`A@k=B2XH0FV-*-+6&T>r0|V$& z@1;HM@E9{6!`8WoIkVxjUR1WP#7LMg{PlYBdyS3s!BnOaw+atn<^3d5U(QAuRo%(g ztl(Brrz|m_LU(1#2H!)V2M^z@)bUm!A66kB9y~Chn2*jR(|DOEB98SK5zp^37IzO8 zFpKIc`-e0v zirJ5Wn$CZ=ocPb1J39v}{cjmhgZ`JJSomNVT3>&hre`w-?&z5Yb_rkITTrmIV$5K| z_7rI`EGz25e9{L(aO#2JoG~F@KJeU})4%t`gtz^wM8oZF&N+S3G#w5|sz~0_wxlnr zg#P1%q|Yv6C_zzR%5>E82`q{vrqZE=qQAB-2bn`)DBDcGwhGihtdk|HV}^%$c$1_F zNsM9bm6ZdqMnTGh1j&#p4-*V@J!0pYoJ3`m?s8XLvu*_X%Ur?~h8XtF)Yk@KaNV62 z^Tv&RI3Z|(!KB*=hwBxKU?DMJACgK-kP-idZrFeyf-ujm>?U+-ve?G_0?(o0mN=0o zEBvD_%(H|W1W}SWg2}2&UOz?7fld`FYCqE6X&!*0)+i*=@RbuZxy7`S1eeRX66fpt90nlB zQ5?uu+;`K)mQK2=_`&?d2F0)WHg}T6IZ863O-J9PfU=lpR;&d1AL410{|hvNWC+Lj za-7bT{iRv{-#)PO|7~rr;y*9vX_Eid@E7A0K9CMzv@xw7U{wD0bO8gsR{DTZ`|$&q`k~^#ztQ#ZAXYXXkUU#=gES znJ6z^rjuz{Azk+-3;n7@U)`lfYpTZz>9=2m$jPNmy<>m1FFzRBm7yjd>hWDaWpCrDrN}F`?m6e+k$NMWfDdd}S$k&fV_o0%? zi)P)#fEG*n9umv@X}8KMzsf5A7|!E)fhI}pxuGCGSaAmppX>rs=t(F7MV5bCj@&)n z*e^p?_4svG@7TIcu`9Tu8TQ*boAAe>EUg(Vd5#PPpJeRb990xL9k8B3Dt2BG7SL^N z(g8uBN#<58OS9yxVJ%y9T1ZXzS#$x5L`D&{-*RHMret|v@aF=49K$RUqu}}A1I;I# ziuUKsoAQ%>N8l2M@$W@KM=1Trw#=|6g zb<1dRBEJOrxKh5FzO{nAUaE~Oua|EU-&NUJCH9h#ixSdBnG)6dn4yanqu;WAsmqvJ zC{K}+i}2iybf5m|>Xn(JE=A~eod0z7iXqMa0)eh&1R(Hg7y$?ZCLNf;5*5H+Lf}Zx zzOnI4hyy<-SH-c9)kQr*JJAA%f7Vj==;?Gs5h=EcK@#C+FIDV!7M4IS z5v!9)bpX*_u35#|4`d(2*@ip=((v<~n$X8R@sfe9L_~fObWA^#Ew#Q%umvwZ7YsxP z`w$FaI?~>j47D0;3(e3Td~NT#K7V;mB@-&a@zWVRMB_9D&z@z7JbMOiAYgkJQ?~C* z5er7QSirb}DY^rEO|z{o10lGD_jKdS3y5Jxdf<3m6fh&{{c};7R}&ymmfi~p763Yt z1(4_9ZkR+v`gVjcN$&v;`%pk2h;5-^in0Nx0L7E{iSL)@hUxJyGY%)Mq`W;4R4kct zJ~po@p9U%#>e;h-HOoz~b+mJNl{F^cFc+&f9(@z$ga-Y8g3|E_US(m9hltF00N9}a z@9b~d@!z)h_V!o$|1ut?bMaBeVw4}?0MOsS1|i1D zAmgi(Fy;2XlqkE<02vV$DEP(^m#b7#o$5rhYJ)p?F{WZw$M!i ztmP6iY7r&?mp5zNOfCFV*LVHJ4rVQm^iTUhR!gwR z&Kmc6J=0=Ow-ixKII zs-zF3qKTQN7?=&2H9VNS0P8F_jQ*|+GXDi68Syl04SQug2gh1CaMrU(EVY(#h z1U2b$$$QgU_G>sfY3|CRL^n~0A2hH6;-|?r;&M~8vb?ySA+GeJZ9WnZ&jj-l!u%NJ z_reNb$$fXIxJ^+QgI>qk&IQ+&;7qP)S_GbA&@Cqz6;!whfIET+Atq2X=ye)p3A1ry zCWqo+LWOz70Xr#P!D#CadMYQFseaGjd*>AvAO9Z}v3#|7>sVJNLi0SN=asd76A$ zj9FlaH(IiLZGoxV7pECv>+4sTju?};fdD3C$j*z&bNaviU4RPEPf*kL5Wyb!55ICJ6Ny^hTJGimIqYMxusU_+x3L}b3P9L zPm`OC4*|2i*qK3ltxX3BplGwfpck z1ixM!P0@{E9@Zlt3g}5T*qCg)XfJL3d-;C^3zGDi5BSE1Qons5`|s}No_+swbAM}f z{=bxmn{~_arqZ`z&X~>atIZ%SaNTt7o0ggP2>@*^xiU;$X&%;l$iKC+_f~ad!5;md zfF4@Qrx=f6;kwxeEOy=NFbfB;FnZVpC!ca|zRXb8g`=F@gLe+d_d&HMya%Nr!UWHc z1_RTgX?1Z6rz~!{gG#6F=0OXb1SZ12Hw5okL+_t6AIbqD;wpjCznu1KE)odi-;f#l zYH275J@nb6r=%^+NO8|DL6}6YFp;m(QWQhxcsMNQvW1_nMh*$d4>vXfUb$0iNNM#e(HXASgVj~@elJO}=zW`6kKcuQl(yTfU)RWIC2oMrP@Fe)Iq zma%FaGq<|2*^~E+`CrDBS=%1mewDndM1^&J7)~Gv2}ogx31DXaK6uA5d9Gj1)fQEy z4|I!*!=6pCVk4}fVRN`n_4n8EV^0=x>mH+wxy}Xud#Cre z-fm#YfW2cT%pX~)&Xn*nN-~~$E{30cg#%KIA)Cp#hl;_*D9Jw1mOo5Pt-L%#r4V)A zzVQqk<#~D!LQudo`~+hl>WYJ7>)w&ku`*xU|9*_s;3y9ZXf~h^ zLC5ZknVihsY^~&F$tOlXaWl=o%PRRoZK)IiMG-0_aFL;p#u<01?SVJ>pa^3Ku8T1| zJGuf_$49SD!1-0srY{u-yylIl#o)(^Mri^FLTRrRc0b0RS;zl**2ej4|NpCn|KFDF z|F^ZjySY05UCP7FJ5s~wkF$t#&ps-^0A{cVSs-RM6@avuXjg`b6;+Gzkp^3}ofnkn z1l72o;O5K&M4UUaU^(L~0{c56ZqC)X&vd$OAPv2Kt1rh<<{q5~&oY0h?u3_3l>=4J ze_HZ-rQ&gDW`IOv*UNY=PG1TCv1?`}@5EiY8=3Wap~}sOe_qr;e2lZX2H|6DMk*_N z)}uYEiP}_=i?#ziX*$1v0_G|G75sYuf)Bwg{T8-Vi1qc;x~I0m(VlQUYt+_Km<1Os?w)Z+<4`sy4$kh_ z!I{~tEN-W!Ub}NqDfi<#yuvt^P^UT5rB&EB_QMd(;N9{%EnO?b@J zpHk*MWTsa$@k*gUcD0KkFVXlWg&=qu0D=I-QJC{iVyd8ceXbe#;hk!*lYbo9Fp)R z#D)TxA&k@M+WH5^=?KN}MV#R9CWSM%ouh*MiZHR8*P07lsQRfuW##&M|B7!SyB>Xa zXm#A8aO?i5X?iC-;SXPcpt!R(4E-AlOv0e_MBLo6;-hIN-^SEND20XRm2(5kX~2rp zWg`B9P6i66TcU4wKr4f4e00_*OTa3&90L?!5(i3USJPg#&#xK;Y?5l_%1LXNlv7G8 zY|Jvd{Lm~rtSU!mhgMEaAfsHz?e68d=Z>u$KYbKDBga$1U7nj{mtb`=)({fu-Dn`C zUACE+c8zLs+9j(AYLu+;mud>Q&UPZc^)ME$oF@1m4u=ou_7F%$-_hf|nXJ&tW)qEdFPVFZ_E%8A(r!d>k5>fmWc}uf&`VF(+kpBe)={6ea>! zG^nh@7AYTu9wxD0KG!RV)hep6znUx2HOd#Fs3#X~b5*0-uvHblkVO^xhh+htozqp) zP@l>g9h)g>RMe^2ik?Poi>8fKH7XBVR;1)KDk}Qc8;_ghbAxB-^0wTe1p@XbzMJ*r z@2_8<2d(y!;RdWLJEt?Nhz}Z&*6wjSn~v?=o1-!2p`h|F-s>`+u8z ztNY(ed0NOJV*L4hSYU`V^TdaPx2?RQ(cUP`#$n1cWaBDnThANBD~gCh{14r7*rKk= zuqSGZe0{C!n+fLxkkImGe$sqpgbjkIUVD|YUEsX>26>uDt;spssZ?qnd(N+(@@eM( z4}Sl9(~1ASy}7ruv*Q2Dc$)dYhxJU$;yss%OaAP7{RPKo7ry|`>?WLh{THJ!J7+_7MNk1ZK7@aaiy5K-H~IhX9~{`{|N93k{ckBx^ZJj{ zF(yp@v*yDwOUl|~lVah4Z!6On#QDASof?G#xRW}O&Wy3rV$xHA(UxnvyS-2Uss55{3As&;JAwOyYi&T zz@5d-RF(kMm7exqqpMWh-(0>ji|Zfs5r>#08QXd;Lhj&E*0Dco^+dwUvaFT)QtnEA z5LOx19fFE*0FR;wjg4$fuD?3l!B`;Sf1gs38pa<85@FK zUSR>adUr_{qdOJ~YvU>A&MLm?=Z>e3M(gYRZB835QRriH&7i39v!_+uq-{{QtMNw>DSyzok6$%YRDR zcyI~OFK(EzQaG{=B1aH3$QNb-AxH#vgaY_cU>OuJLK9djoStS)yQZw*k$EaN4R8HA z;e{do!p6=BdEf)-NNoVPgs(uyQ@3JM_f{|9B+;Tp_#4&)@q+D++ShhaJ&r-_;;b>I z(*9}CtY%21A!5c6mDSq}s9}n)BB}&9!*JGAZ84g%_Cg1<66oiqP#Q{O)IC*IBSwq- zqc(tnG2r~OH9&zgu)NqUyyt1?9bZz0&lfHCN6J{~v7G=YQLq zTPyqTQl16u|7=pM3_zR?b69`|x9}vJRNN6z(J*fiN~K1~Ya}Qe!ORNHC!xLY6|M8@ zUzwr4bu-k>IJ$-Nnx6zK=dhM<_ZV=ahi2Unz4|`v6`XpO!9pytg0C@NO{_wOWtit_ z60ugSnk~!#M;8~bPLGe6UE}!j8tGPvosrG-oGt&`p)A^6<|FgBZzq{K1 zm+{QM|Kpw2-j8=yCqJt#w_(f0JCC;A;+==sZoBrit+guKhe6B&4qU6i48-Jc6fw27 z=OmEMH1sbnVf^61-yx7GV@YjDLgor*T_3gvO9 zC;$9#`tk_?yx5V1GaZzxljF;iYj*sxa=ZC9pKAF}>@^!7gag>a`G4>3*zrF$H&^#R zmh(&_|CRReMaX&_-l2Xy+Gp_P>3}(R;lCN@={Zq;04N}#ybonO?G)!wUK_Gej#qX> zD$eTe!t_vVQxO{F1;jW(*&!JGk>uh%%%b8xC+zjn$<_AWKKmdq)Xh*8fPbMIT!}yZ zsBPBUK)VAdgwiTMdi7ln)5bIKGbGUvs4q;k*5j8b`}qL+d^mC0s=o0_Nmgy2vq`i} zVkzNI?TikBn7?AZ5Q42d+v#Xwqjn$L68|_)8~%?FCPkQE%JZ}Z+yA%r5A68=+gmIB ze>snc&&x*^$lM^$0n02BgS#QjzzD@G%ep*JZ4;B!Slb8@HiLTQNpzcC;_KHZvcjPf zMJ)+bQ_S7S9J)6EYfuLEaagO0_``~!y9^diner~QcK+`>ZyrH1L~(h7EcO?<-RbhP zue#GWv7_=ZzM>>una4vI-Qw|x#Z}TGYku~Gs&lzI2zYO*BiGf`X$WNJaS3vP z^*F4a(G?3BvzsqkgQ-Go;~BW{)7T92XYIt?=ax#&Ea^HWfPrSkxV-=o%A$}|7Fegl zD&tfhU!ELYpMaD9cYShpb$WgVPJaex=hxum|D9f4UjeQ4zX!F4U0&o_yx9al0^*|O zzX#Km|3FZVQZ%@4U9ms@8WZQJ#2=QWoo+RWn{K1Ug&aI&2;?Y#zvW zVR{7zBbbq^uFWR1igABj(Xt3y7*%pFi_l7L!trYHb&C(RFZa zM(hEx(U+)!mG+?lI|szPSpMk_dMch4`rq6Efa>+Xt^K_nJO0P!D*oe=p7#3RJOO~# z3ixrH6fph`-t(*hY=aKuHW|o3?qwuyee)J9LAv!Bz&vhdwo%CP`Koj{(?Sh}da$9V z_&re9x!NQEmWt4CNfw778RZBkH#aE+1c70g=P-K?LJaO8fS>4gkdXAADTE1Oer`M! z1Ik#4bP<2g7bRUPfV_e!tKmdt4HqviE|ZqQODA__Dc zk!k8uhK=@QWeStl-i&0WU}hn!Xw$}M0b~{OhD(ZCOKXY-uiylxflUXFF8ijB2`mak z96k!A%XmukZ1tp1!(XRr0Sw_W+j??_y!{lvdmNC2|?34wj{R{-NXTn2j!W)Hu+Y_8N&!%U&#exSaE* znJi^CG3_yu@>#DVhdRj!skfc1g#Vsm@RMn1bow_jD zts=USC#bJ-zVL`5oG!}Ks7lwCAcV$UyBew(kMz5=ym^9r@Zl!JP&t3M6}4%{71+fDwfUbZ~tOwiz2lVY|hZfDypJ%(DlMzyiOI1uKZ zC=!rsFsWCaT}-Bv(rtpNYaeaHGqoX?4WI?J+yLS4Y$(%`%E4j*`iupJpaHSKj zfCKnR+yXm%0fPT|x7GdI`*)k&zrBCcTTYKrp1_#<$c}SN3K)(`lc!6` zOA7pTNTQ+HP>U;R^Agqq$0*EvHUL9J(72@UJor`6w!JU`Tqo9_YLmgt-ioM`3!le=+_fAhu}??5I`U%nC(OYTah-` zy0&Db)NK*(%g((j`cWoA4UEuabo}(;&FFsT#P0Geq~2SWn_sq90+qqeY{)90S;y{F zoqp_2y~b?uHIo$?@vp1r>qE|1)wVum&nu?v(kAT!r|q{kac7viXu7Fe$4tK~(XQ3g zEdM=t{>QC@T|55A=HC7){`XRzX8F&<8K;%;{BALH(Niwo+6|8*QtkLsp^^&LR_paL zpXZB)S%oWJ?eVSL*rsqx6D`i-o#r9OBRQ#YdR`11-!mR5i#y?DIAlqn>}lem2K|S^ zYJIS0*E0}maRT8XrGzz$QCl@!gJT==PP0qZ@PBc;9nYNiQ$7v+e|vY=&i}NzeX!#H zOLoUgV6@& zwH_-mn-0ZFk=G34x08Q*>Qe^YTvuge^FWYE-YUU-wv(ezH3$`(u{{*-Iqo_;wf7OL zV|=rR!?VdY9zyvuT%KRrCG55&>*N%P8Q!H|05c7%&>#tBS^z=d9Rv2>m-5*PQd}|N zJg2iBYW)W9JHGdFz`eW1bfo$X-uuX8HM9^aRm&;taN1cE6_b35E~6~HSDRv0_n(7h zcl}3K^D3WK`#&Fzx3emOP5R&Fu6_S+dv|+v|8FVJ6kCry3#QNmr4?zK=(H^@%@RAu za;Hx7YEvBmm8-4Hsu!>@XGLHzv7jt2+YIa=QY~>-{37&neSclTrC-#!&@&T1LRW_h&c+n;0(#*p1Tl( zK{A0^jg81qQ3C(2V0jo-CJk@vc~Griwf8{KF>jUmL%1#cLN|*c1iW){heam|z{C~#0-|}hV|J!?3{Qs?k-If2xa-M1Qznyt(e|lb7!{R4X z%hq^YIO${!j|+xV9e`P_gm`Ce3t@@e^hQBNZ{`p%lMN8>w0DRo2Vy2vRrST9y4raj z_G!ic=X3#Y;QyNkTekeawSBNU|6j^81v{L{16&jmp?g&#e#u9fkj)t>|5>3cc=ZC| zH7n<-=0VI{eF6~Rod5*Syp)4Yn02B#%THhO!l(L~d!zHO>^h^2>j_-8Un`i; z&mF7RKaPel9;YxCSGs4v2;3z9?d|T_>;GV7|6k72y#D2|Tk`=g?f}4y^3B?52moTC z(tLSPTITuHGrbLV*Q`B&SK$pzu>~S!FWUn-$}&V4C$%AkGmC-JCLA0u*qly<7AfP4JDEa#=N9gfTp4MRJk8~NH3J0c#LzH z#dAy=1lL0-eoNK2Y~cw2n$pb6 z>RPm~0y~sqC7EXH7GZsFI4bh?aRCBxZ0hAo#ANNg4y(jUTCK%lkJ`;fVIDZ`)_NlN z5a7+Kt%#0rg0ir<*LR~y#csq}T=^S3>Qlx4Ntk4?*!U0@13cH^e+&M(A=AsH7L26V7_>g4&DKc7533eICttJwm+etja!arR9ApnRFYPeiflVOWr! zzEiNGBGww?o}3-A)P)3r0%kFbWy4s!!0n0XVLgX8I?~>iy%p;>lUmAyE7no~KanCl zqQ6a!%-wF=q_<4^zz(<15*@3oxxLDyxu&nSf|4c?43s}?Sy1#NELh-5vk~^Tx*c2T z@V!~7B@g;E@qhX~%;Jaj|FZ9YZXN6$Y_ItLG9H8fi@{#t79b%05W9ft%Yruo534p} zmy1C$_^Ri-pUu{=avu<#>k7u+fJ*f~vf|v|!PCV5VK$jp{BPp_`v-fL|Hsz;!Tw7A zU&>?f|C4O87`6|y$q&KuSw9{~?tc!}CbokM%qA@^LJnb?v;9az^W`{)$3qz1&JZ^m z1Q?AAx+Mgx!+}V4-{Fit3rCPUT;KXwyx*`i@ns1eL*rU)6@(;XCN%|xd#9Xd={?(V zN~0G8X#}e_+Im4LY^y82-PSB+!C?FCq@%Zy>o#kfaafapi;qQ&T|xd1y~obn`FT zB+t;sOSw~8Gd7!EZ&MD3W_70G!Bfnjy$>8iLm1z&Q=qEKf$G2K z0uhVtmYc=QJK?+mdlKjsWj*!>8{vv}X-%>h-p3C>yOh^tZA_XD$sB^U@6{Z zJkjBlMp{!wD0i+>l#sCGi$i<6VqoFETzH`89#pgDXPiJdsq5o5v@*(ZNyZZZO^XYOksZNZFnl|Tc)SHl3%s;8l|a6)fn%G!BM=5kZ8}ZLY0ng`Y2bZR06LTnzxt_KRpf{L$c&^ zvtTF!e@%nll@`dt!mUZ;5V*{&a!7STiyK$+9)bY;lwcAlWE*?ss!lalX1_-F7^Y_P z8Z}QA?&)!9i*9XJ(wWg>^{J|%&=d)FF3Kjgw9=LOm4=t!<>nFGURuciuM$ii)c@mP zXVa1YH&^F>OL-jm|JA~LKg87eQRIK#mxnnFgqiOskPU_BMiMP<3w=|WM%aoLQl5w5 z@bk8l@`w#27_cL`HkoW6_H>eug4h)#9o##O{G^c;;D1?UbdCVslD=cWvXpZiXzT$c z&sRfbaQwv`49>eVH1Yp_@(IQ#^ErXk^Z%{Qy={m8(=B1e|CjI>{QqY<*o*T5k#pyV z*a6DUEOZOlcm|FpD2YLqq##F0Mqq)B9QVRG!o9%?0)} zOby7)Md3}BeAM4|8ty%LtVKSY-kV0Fah7}>L*b-S=bqp}#5XLF7!Y|?AWZ|R-jDJz zp_}8FBxyqK0}u>~Fdrrn4nQzTVu*ak!zkp@bu`j=B#rWBKP}HNn8hIIC)N!2?>PeW zpJ~zzV;CI^{&Dz%g%$t57-hAZpj!4AM&lwO_X0pK3e#vzx!^4M`HlF%Ym6!sqqLOs z*oW)?vV}oK!0Z3gqFmZ5^ZLJZC~saLUHw)Gh<~ky<@8%ogxAy>x_EQ?va%iaah7IS z#jefUrvujEM>^D`rV!Y)7$|GJu1D@<6UDd+-n=ME3-bd={53Gq(M%G&@0*Z)O1KtLyy&H>t0X2UG%v)?m< z_;7V{?Se748rwCYv|+YdqXpy|0`3h%{L96gnUst{KEA%sDI?`L(WW*A`8eowY*Vd{ zx#88|-;LP3wI{y9xl{A4mnNfxSV0IK%U(lm*N=}O#GN;s&Vuy;5$GF2H z{Crcu@V4bybv?<9py?X9eDB+ls;1`mNG92YF)>>$O|cQbygYq-a!L2&qn}P+onD`w zT=BIkH{BZPME4|`y5YB{SEoO{I{EPOTuf{^sJt{9wEgJX<)O zWC)R;ujrI2U>Gyc^Ycp(BZ!$;Eau*GkU|3ReyLJoD$d?!=njx!NI)M;5KJL3XC5ld zi6k1jq)jI&#P^uMkvrGUP)3W)K!B_L50@uLFF%~0z53^e%ky)wEeBiGOU^M+a-iME zGy;}ttY!st?<%mjRaUnOv7*B4#;ksw#oFDzm8Z%6myE&zyn-o=2$~`EFMAr!f3^>{ zckTE;2Yajgze{-x`ybU!*nn$+Toz*rG^WuHVGp!=v}nID2L7Di>QLso(xAbcWey;$ zq>cddAJRo#166b5P>^2OmwD^tPHBs@o$ax=4b>HKKc%6TSGa6rWs(Yz@YPm+6asu* zLOpS=CNb?5Fh@8csPH7iXzfu|;-kTPKO;sY94rPE5)Nj?As?sd1xl0XzRKLJhB_$A z1|T@?pCNKlKnycdn|za2NT6=zG^++j>0Nk_sU86*S~ya#$}`~TMJ{BJprvHz>V zUd*Pi!2J*#zSf&XZ}vlkZgr-Y7x0Qu)g#CeCRZdZh{5VumQuX}`~;%_1Vch{@edB1 zbgjBbP>!_6UPjS*&i@g6Gz;wH7|2X^ON)!H%y!9F;q)H7qhMO_R-L1Ymf628?(xdq zt?XsbNH9H}Q;m*0%QkJ_aj(X}q@a!pALjXq$a}U-@`=&yL_4&ItcdQ=kX_EhPRFHWCfHuYd**@5|{l9j0SMuLd9z*_PgT27$ zZw%fKA^eG+ELiZ98Lwb5Ng{X_j^K0kS1Eb9J`=2fse|Vz<`y34x#%yCHDt{M1Cgb* z*Xvn6y?qOVo+xQbFB~2j!h%5yfl_j{U_5?!BrFDy80IK#m)v*;j&<>{{DU+d+A_-P^eW<`Cx|SEoNSRlyo>_=r zh@y)_yZY*QiGvQ>loZ6Y%>_B1^Pk#;HAjVW73X+dEiV7Obx7JUc}>(MI>zkPY1e83 zSHP^B!Nx3BU96tV)_ksR#Yp2(F_UX(TM>Q3GeIincFXx~blN-1t7f`)nlH9b)?GPo zQEhTmjG)+0=wSILpo^<#?W#f-6b@ZC&gio*n)jSmfHm$y_1$eS8}gCMD)IuXv+EA# z+wvlu+icZUJQC#>1tKUyscx?zQC?-PFskRGuDn#dZcspetadLPr06D0d;Ks?Z^G#I zB`>D7P>EW{AKgt+R8JGjn>0J-C8;X=LiE>9HS5?~GF5)cYz%-%dTxvfDl`%pF4%utaY$eh&Jm0Ps^d%2W89 z&b)gx<{srCxIVsMsK0r6!8s2bMwYLW&X;UFx`9Pcgh?DiT3#aoL-7X6mNN|) z*M16d5-lzblvJPXSv1S-3C8=UQrg{CTWjbITE6lX%o37>Y4QiOg36T@x+GxKto(8MyXg_Xjp@m#kXIEs-+N6?*frL##{ClED)4p?7vhT93gvhfW39409RSn7Le0mJwn zgsSxtyjP;vhSHVe+%uwc88xT`8-*F&fMt7BGNXH2io)0*maglB%+ZkW5w~?rI61*C z;m2`8WfTHZ7-GUOb_nvE55>JbE3`qfgDpB=#S{S4{(i@jelw_l_cN5(zCB?_) zuHXLCy#J#cIOhRC)BW%5ogLf$zq_}J|F@LKu>W7M!CussPhtHS#(&Y3MZ0}4xK!EK zO(SVCff>X&00G^i67iePQZmj>HxLHk+VTZ4tSZvfGAQyW5GU^)pOc?qhhwv#o@@J@ zAb7>PB$Q@=be#ZQQ_x_J5mufviI^|lSsRxK!ODE0d<}>-RtVGnEwO(temi1UNyzGp z)e4GEjv2bgF__B9LvOGAqal9bTA~ZBh5^>HKZ<d5Ua1J9-rgoaZ;;u*tv*!RD-H&^$+m+}~L+oc@r z#fWTb?)(tqn%0{|8v+$*M-ZzF?o=aNnPrqPQNH%eP38AGV7_Cd-x--1ZM6<28744{ z>4=rEpEGCiw6P08u_Z6w&M@Ecv+? z8GGgh}ewv^rK`SX<5wy(M~9|{`LYO(Mb=S!6IDdTt0R&meP(I_Dv!Us`4 z4nV-s2|B7@=d?Jbb(qBhS?1hDhVY&_v<<^7PGJnf8#IC519O%umZfzQfwKs@V*aS? zO|a?l_hgGc$;RH?XJQ6{HFn96=TDnAdjj9!gnJ0Ypj?jxfl)}JAqYVp5(0|_`N7P( zDqC)cs+K6J`okyCY}=iIs=o8-o0eyvpp?3Ja|oDe_i$sQfCKnxYm+s%QEa^2{S}Q* zH?~UFzVQsaK6zbP;q2_Jl7Z8VzyVV=;h+b$I?uuS&s1L*FE)F7^wsMmP3Y3(FZVV#M;(7+q7wOa zo>3LXoUNT~Tx?u#{IcD%rS5Hm;M6Uy_a2$;NMqDx1*4Cdx?$Ztm$4 z5@j~GcWI%MPdUn9CVQ~8vkUh-=J}(VM)onL#hTpXwIrByxWk=7ehdK9xt3nxrI=n8AXg9h{bHjYkY|p?VL& z1R;nz=rTyzwY{lS2Won;X5aFjw>wsk+yEIj#>*9*4 zX&LR?j)H~ATbZQ7#NxP;P%cJqWxfhMK|T+u&37+pNcH8(cMXS^l$X9{6(vrTxe7$I z4cutI$p}o@yX0?Mdv+kE zHN6!z^?5V06cWZBD|6j&q*#Ap0?Me(gkcm?kV*aou(+_bh;Ph#shXdvnBb7iT;Jz3EKs*PN zVH5d=(%sN8(}I?ByIoa8b6NNehK0W*{i2Gop!@!EJYNbkXZwPxyOsR0*S~&!!j2~{ zie!?cZ~#wm6sF7)=76Xw$WFlJ>)5GQeqx95FpAJ9zbH^YNtqKRm5Q87W-;!Qs!QKI zFiLIl;1!C(bciqsc-2(?EgNrWH0S>U+j$`h^YA7~6Ouq?&i|}pz(nPoDvR{OSlD*M zI6kyR)W%8xbZd<0pN-4vv;pw$eboU^Wn*!Hat?w1YK>!AZ5kw56E2pn)%sX2%%yYf zTAuLT^KZR(i$3NZjp_1I3*K`jRNgFr1x_%5nF$ zxRi{N!I02`1|K>TJRrG2O{F>Ux7-rl1Gzl-jK zTcj87p=*zG>8SfI$;f-tOPB4yl-=nDb>2S<)9E~T7nWM9%AZCfdZ4Ql9xoavV_6$0 zjp_X=#QE|7atJe^eV`&(F^11UrOLqADm#g^A}~}STm`5N@)o;oL7uWJfomX}2g4bM zwz(Q#$D6Io^R=!jv^|5=2~*Q!t1E$D`CJ66u`Xgx?4z#*FcJ#dI*ofMPQo_qN`?STNo)kQ+_5ANr2WYVNR=T#w$$U2XoDB-I6f#%+`TSF|P?6<>!Vz zE7TGdbu_4stgAxvRK&0~!xx}}Try7D(oV_q^SKhNh?L1-wKi0m{p?t4l0~&q2=-ER z2i8-0pU8OM;qFeBhExjGcVR}DN8wG9#USLd`~KqvtHnH$&Q7jB{B(Nu^2621<=fNa z6Kl^8!4Yp=71)ybNH-o)wK`Udt<0Rg^CNHk2c0WA|| zhzwx?#uyenJmD)yFdG~*bR<>7j({R~85PD`48=}m&JdF)%UO;;Ke6CB>8@M`~f z#w`4G{K14i&Gz03-E!w|*Sn?|6jQ8;y6vI{;c1oyn-O-xm-;GKC)X^u?v!OPLM5IR5t3m5 zf}ngMldGDSBOFt_4prw#tYA-rZp#Se)~5s-`RKb|8H%r_Wxx(#{RDj_5!oO zX;6O%A;9R*qJ@A7O8H`=h1eMAUn3O5D_BfmaXQFQ0b}RZB+B~9U=-#72r!HaNCFT{ zBI3P4xpFfK-f~A4KA2Ov7>RCgJOkISUS1vo8H@Da!5Jdp?eR4echH!CtLrQ0GAX<9 z;PXskm*&^i=PI8hKBVgzwC(IX2;vn93G9#4D@ZKI9)|Htlo54Pkgaw#Z#FP2B1kqS z5xWsfCmd!I&J&*BMAe(0EGPj`d`nTw->-@Z?r}|03#DPUwRF0AQa|$^+#^f1-|2ua z-PZ1?(rEK(G<`Fsiq;RiLCHLiq}d*~b;a5cE-T7Zx$VX^4m5-9{s-Yk5ggdj~v2 z8C3y)MVMS8rJ)5N_$i5#0r?j#bNbYPjSpR%@b<^;pc?VWNSaT<0zU}e=)RWg-YPt8ZGM7i)-G1-PyO1?Hj z&~W36!%$cm@rRvM&(C=+K+Yu7dQiTt2mQG!N6HLhud#pX2m02g$Rf{L@BGC}X|w0P zZ7oDM2;z0lwK9XGCySH5rCDLZ8a&6TlxA)s{c)ORf;2Tk3sY)nIoy*q0yn0-m*y{k zTyalv_bHV^RGUs&cV^V=brrI7Yhq|_^fF$B@B_yxd>p%gM3+p6)rcg0KGSphUgS%Z zjyKcE4j$CX)vjk*b&4sx%2I*h#Z~89Iu|llGtI+PN;jSsBuA=(?}aFNogbv)ge6So zo!JQ1BRf^nL}Ps}>SZJ$GA=UrT8+r&tEE#uN>iTCR|ILpAWTz`qZn^!4kmPR@#=P6 zl__)--a>$3h9S$`NtGr~axBk^umCbeu3pzOCYR`{b3=XO8MuN3L}N_Q2(T4{GUmgQ z!(xXdH*f^o2<*eO}1S1yfPl5?5D*2PcAzzC`36YBwxHRMa|(Fq2v%h}lG76GjHgja=2)$yJ= zf@ZT#Cw%Qjtfz;-=Y!^WiBuA>bc{0)YjN0DI0{8;@Nr8#STI&n0R_+x3TY&0w z1#+#os5W~^(gz8_Vk5Ur-YxfR?=-8x%-+N3a7m(a-a%P&*pMn$M~q3DUY~m_C!LwZ zwvuul6EBZF$cpOD?g{xzxvHOw8^Mf}`gx+Ms;R*>d@ z%Xp0Qe>$ju5AkA-{u@%N)dVPzC$ww)$2aQ?VD@lP-T?BrpY@#;5I?)MnOiA_p|#UZ z7rK{9vhM_#_biJM?bv&E<3k$^lfQob`h=EZIRkjrGD=RHSt2UU5@O0tUAMbp_R~DG z^8Z1RFOL5^`G0oyw^#mOOL+|bPY3lu_IG9<*`Du$#8Tgwst0>*jH zBL-I?L`eQC3}aYefmiv$iS(LrA9)pt$#S()E}Swei+c*wxbRrraufw7@9q2hiZ}r1 zUT&px8+{loMPohx8jk~|Xb!%Bk7Gn&O?+CP-`HdCT&rgh&#dyF(&$=9fQ|b9fo=cY z-QQlxe@l7H``>aT|AFPPv}E#j51bqz~jx zRIQllxX8AwH&_O*X6~?E3`yAy-N8S;xd<`8eBc6BHFUR)ivs3h0r^H^g8G%}IER`S z{-pbK5`f+%Oks#&Pxy+c2Fwc-s30zY!@q8A?*t0CUY-i{T3M9zA)vQfz!*OV7=bX)F&MKn-TaM#_%aOR$oUbND$;{ zm@r>;F&aX7^1Hh?fZ;Js=LJ>1xe#-e!(?MK4|eQLe3rr#P8A&!_PL{8<(`&CW* zOi$du{%1H!fpNJ>g7#nY(XuPBQMRvPRc-)mA_bsh!C#W|S_}CvzWF^&X3PA?pL+Rk zdv|ZgKL6R=+}&Tvf6I7kmD?ERxOW#OhAOMcUj>X4_s$5{Rh4d8d(%<1z+nYo&0T)w z0(A4S=muJe)g3BsQxv)$$C_FGH+Ta4@3E0I6=2(}(WP4Io7VZ@G{}4Vf0Zvp!ejBKBC|1TUsO<8m&MEKWX9Zh0DzvU zSiWCn_;NeGNac>3{Nx6k*v9_;Cy|5zwN1 zdOg9HHX=5bSNfPM!e3Q~PV>_BQQ;TidUbCor4PLYF5mPp>}wdVY1yt8m@> zH+X*u`x412BMbk^{Vx9U`E!G&&jws5`Cq^OMby59_lKncMj>=@banOn`Q^()5Pbe@ z=~>DW{q<{5Rye=BJ_N!3&cWY;C)(|cE(kVml57JH1O8Vx;y=DH1lYHm5D&qB{KsET z&VS};!Dxs;aPkR8W0GV8@bV`>Cpzx+dOSGdyLX_Qfnd!u6#n}YL0ek()#=-l7mTX>HJwo@2-fI(Q8Gq?WCg@I$}oJfwyv=qIs?&| zfG!3*U>p3m_K9mzQJNTU0q71@7w7~C?9X}G!}Ck$bDm@a^`awwC4KM?1Zxt-0K9ks zf{XLBUjpzReEH(}`0D)V<>}ck;F2N<5)3FaR#xhegp~0mnV7u+c>j0$B~vXk%86AX zrYjr0vKi|GZ|IVJjbZ$pvOC%y<*6m_46~T~n9)z8Fv-f}@O9i#69KSWn$tB+cNJcO zw%hCVz*Pz%GavR*0k$^jBGg&{0MqYaYg4@FCvrw)yy=tkpJ!s+N@typb&F~%=Ka{r z`}NV~>CwxdmcqWppf@vciPYu!`E>;!mzI|TA#$N}^9N_#jIRpJNB8(+8pfj}1Klxm zp6L#Qwa+?HzXqV2YwwIceGM27RBZ9z{%sK;F$u{S|6Rb0ky!lOi(2y1)G_6f=haqA z{?V8G`Pnb$%Ube$&|55dfz->R>!Y8Ju1>7gE^Kw;Uv>Pw^acOx`RkJx8$84_lhasb z%7@0;F-K(mzuBSce+QiaeBrYm4?(xfJhs<9>(u`Wx?Lu_Z69oI9cUjV6=;Ev;{=ii zTg&1Sw&@@py6mtwP=z=GLW)@ zb@cM}>Dh-jS0|TeN3TyRfGFQLr=pVhAB~jEf-a3jPZrPCgpH$`@Z7L*53y~n;0!Su z7b)m=nGbrmJI0&`dT9SOI5axUzab9>bqf-_W!T_W~q4 zFVmf+%kwjJ29@Olb%Z9)UK;reKM~9F!P%?<(yhZa3CeKBW=BTMvsiuS7bm+$aMa(! zgn-N6!SUI}FIHGoi52T4mwlol$;)d^<092U-af_M;!bO>0|LtX0?^|uFun;uFP6$- zfU*DttkuikgN`29NXM`YF3qsW5lUfU{NX*p)H-&-tJpy}r|%qZZpJHlI#GGy~&)u`l*}I44>E5}gdnHy*#*O+TN@G2}L>Xjp+bR}St%~hZ!M!HXV>_Al z8jCAv>_=C>`oLbtH~LGS%Csj!GIEr!A?CPBf`yYXNjVF>XE)70e`YnmetjQ2k%kPj zt|B(dxZCl&((m{^?Rh@NV`w@oD^tbZ6Sh+dB3qcI zRqZ~YqwWJeE&P9l)q2LuU(NTw_O>_e`(IlJtN35bdD#80Z|wG$JSM5T`sH_GRrkK8 zzw#vkdhdH#APa;@*9%vk?D!xXr#>xjlMP$lCNs`6>#vgS>}>7_3bIyS-iOi4t(DSHEwl;g2bg^z6H+ zHYM=a_gDY<%4va}s4W6I{rvJL7e22xYYX)k@np?K-NG~Asp&rJZ8tx(OKo*hh-xLz z0#myrIBb2-%?G2rAvhnL*{^(Iu1!mqIR8v8|X5*>u74p$-c}LN{-&n?< z@?A`%zq*|7sxN#1wa7F+FANOB) zF#T_L=U~&(|Mph#pO*4`llq@45F@w%wZq!D zm!x*+?z$_rW4fn>{LijY%`W{n$NxLna^(NromKq5r99uF{LimD)=B@qz%xQ(KFwnI zNf*C)S@wS=7-~txHv?ODm@#IcbxG5_i5@4+v#A0vCE^-9l0|bZt9HMBl^GZB(HM~8 zo)Va`Mi7E5Nx9%jhvhCwQ~3phcUh9YxAHHRU|)bB@bJoJ)udgZL+y@qy<);{u=-*g zTFL_hXsZrde_Sm=O$rStPw0;=373EHzoChsE8AT)F;Hg<*a#x*;y08xznKd<{zRZ;Dnkn&=lM z)$(DOU#2xTqvc4nTF8KhmS zA(*C<-Y5WDeq%r%Cfaj(H>zF+`s?5R>W}l>5VCn(q=p66y{=OB*tMQo*K3+399Cgb z0!|5x(@7U^6w<9WULDd*@{I#v7V*XaB1k>GK%ztWCS?fYvXRKTBuA@BT3GmA&!{#3 zR&Vf~gq_z=c%0WpSnj_|*Y`G0oz4xISEo4c$1e;E(sAtz$I zK^Le2pC|W^oIgDUZKmAb-34X(5hXD!CP@UjBvOCh&DVjhdCEI;G9Sypqov1zp9tNq z)6)xsxA04Za*VFhB!U$QdrAQBeKsAl<#i|Zju#a+3|tyG&(eE9_xTip(+iMbfX6xA z*I*2yaZ$jGr0fC*n=5H@V;Y^z#IiEz4I0wao-btUWO{DaKCX^ajSmF^uCI z7~Tr6XDZ$@q{`8hOhS~Plv`E;vV-TG_o&~Lh48tEY?sb5f1Cz?0rLqe=n~a#aP$It zf;r_o`idQ8fL7UcA9a}_ZOROB`@5EmZrja9H?Yv^iGnOD)19{Ef-3XV>f_PSYr!GE zc(d}FPOoDyo0H;ikZ9G+rKmUWcEH!C4T3v9!D0O=X}x)TMIYk5?9s^ETZtQ(sR8hk z+6!N5;jbW0@9b7vMwI^JiU76zpUGyspXASF1%amX-_f3Z{u}M>ZSudYLIY{{CDK||L=_sH~t@MdA#($ zw?iPOnveM;XpCTU9NZiSH^;%vaqthp`T67L|5D&d3Y3o_l>rto#u1B~*T4Vg{=u=G z|9x+7f5ZRR@d%R0=NqUA2fwQMUP%tH7t*j?M@k^5<^FYCy-0y*4uN6{3z@2fFlI0N zru0<|iibd-=d}Mc8McxGYDcidDUSv1)3`L}Lo!$<*f!5%RQd>N$`1za*|0oQxznm2 ztjw0Q!xfc6S{XoM{DKx;`6K*Z^+A-H?sKrTF2Lfkswo2c${t{gdi~DS) zF{?)EI^UuNbip#3GRcw@u)v`qQ%WU(k_@~6^9EN~awXVewWSH7!Z}@H&Vu__iW3k# z2Z8F>3swE9quXse&E2XT2^W{=8cj$%1Lx)5r}KhBu$`a^+}K!cKdt(d`k}gJ!}#dH za}DmMC^66~A_RZr#Tu3-`rI%W`}E*l%N3Y3g~4UkcNH>xgSH3k3|SW&>*m;kTcnC~ z#9e`mVZ;Jbaz^Qj%^gRrHFgbf;+yem!P^Vo1QzHH-meatXsA0_e`ewO5j*p=1BQf3lJP*YR+&((v0 zrA1jn1^5K8GXk%o>i})o+8hGv#?$%;(4aUheMKjj6#4y?vRqaPbCp&8yqHp+cXND* zk}!=B_sb|KTckt0o2Id{1~<#;rudLHqdOpw)2Ad5x-5-FQtYv4&)kzh&5XaG@}MXS zeiaaS$7zhPf=Ndu4(-}6RN!s_pcsG;;2P3%9|L_QJpq8Z{*Y-pk0T&5RO5s>d=yih zOhAlp5!?Gb$H4CbL87Zu^#ZW;pS%y_HPEK!6a-u9$8)`ini*O|{VTTS&nF5J?sNTlFg_QdZ`H zP4;_z+VTHYw13U^AIHZ>PW*=r|6k9u7XH72((efXF}y)B;hdcRUCGMwXp$%0||64PzD8qPLu_3XNAO6==*qP>f1)m4Q#uu{}W^+|v&1yS)x5(B^_^ zxytJ{T!&{U@Yy)($ zf*^}fQ8@XxP6HPx&vAq}1(ZK@Sy|?GS}Gfq=X51b7J66eNFnXW*xK0me8d1qi1oyruP+ z70x20r_wCPGnn5ymLBvo#WJJ5midXGM;zvXX7!<;ku@-BV?)`IvProZ%g&!OCv~;T zG*B!&z0lU8rPYjipi$K{WgY(J{|hwsV!I2My^10GRjSnrZ?y;2L0POY*=N9`?+kSV z7vHf}wnI-j$|w4Q~gSm+Mx1y8~3ns{zhfeB(KoYsVL4|Z;DIl3$S=BeP2qo(boS-h& z7cFQ+waG^*YV1A(zacP%3k1qzBR6eHllUHt06pDc!gHG1Y*|6}0&LfG_mwt6z*lAk z_?oh3^ZZeco$zGZR=O}kK$$u;N&!XC(~d%ba&%h5hDH@I3%$Z3~x4+`t@459Yd26Q|;I{T(0NCy#a%B8{y9-1s!kIDlJ8f5*s7ilR|H3WR7~dK{KHfeSsm5S%7Hw z`tTzrh{`@2Mk%kNpM$MM!#H>Bvm29+7S17~>!60ZFb#R|-T-Xf*4`la*PQZ!UAPXg z%Ys!K#bN8VTxp9zog;0{eYtn1iM@RuLqgs<*L*lkd=`05B}=R|BuCmtP=q_ANVAN} z+HH?^b}tM~bRKRH_*gc0{hZTcOhArU4)O?$)0{iGB`^kag8T=+I(rY>FN^q0OkAKX zCoIw_%!upS#@eVgF7e=vcdV@`+HNb##k*^^D4E(@*u{`U<8-KHRqTvDR=LT8WlN@n zWXn`^ShXUzr;uFcXpFz8py2^;p*yG0K$J_9icST;RR1WNcQ>=yn{Nku03{C$DOmwj z>JZho5VP9tcbnT?9ly-jMw0_D0octypC00bAaEJibw zaPz~f425`XcnF%5v5d-~pfdYfhW%>OrbgS*`O*eL!Pi2TU}Yt>+7=ks({JqtgDT{2 zWelNLF(gg6_Mp^h{7F!>hJC=(?~^vhu2Q4M#W3pNirW%7_D)?EjcvwmA} zF$S;zF@mIEbImRKaRMx}AuaC8a5%K@6GWtqpyd_%BEM(OuRiQm(?3&Mt0Hx+MYWcQ_CdRX&{nm;+Y4?F0CyV^ zt`6{eF|G%I+Y59pZw=2^Mcu)h~z@*E$gEDMe3vg+o}zw zFB*VRSIWf9YczRCkSBtQI>|`G#lZL=z^Nu$zgL;|KQR=tm*RG;U&XArbNf|OaBi{A zJ7`BeZR}`{bQcLOFpTlPRo*DwagNapKC;snJh70jL!CnMs=UQ5KYQcf34qwzly)HU z-A?ZYJ;1ynwzSxyU%Pw<6Oaaz9xl|$;bD&r$nUilAUb0zk^F+Cd~(Fcvn0~Hs<79V zF;=FKFh^5aBM{|-0odNMR*g*>cAtUQbcb>S@f>jzw;aLfUbAnIEj#wp^xUT{sb-1q zo!srR$q*)VyGxKOWjm9cX?^-o*i8UrW|*JnI7gJ&oar6Q4kV5!$@U?^>Q#%wAguLv0oGAN)dV+&%{DYf%TnzU|RhsU6^!m1z`@Dn=_Wgi$*m z=2Gq`<27i*(cO}n(7rPh-QaXr2<$spNbts>90}hP<-7Nm<#+)Lv~!E@cXCl|Cre`- zQbFV_zJvE9@CmLC>0fpsX{c?zqWW7hj77G`aHX;U8Uf5I`gR*%DmH&@i(RkKI>6dK z0)IV(-dneg^sxS?1OK0TC+uVE;8bapHgMkB&C+Ki2YeCfjlq^w0cd%e7=& z720u+J@S+K%P#;3nko;hs#Ff)WyZf&QHcg;U>XE3Dr+?;;5vy@s*A1>VM?q?H~kV^_NKg2+*V#eMylnn zAcQj%hmhFbY7ru#*&=SWkVOC-GV46ue+`C zVmLf}eOZqw5N7EDG4%iyMZzh}VOXG?uuRq>JG;ooK-)Im2lZZGfE-QGm-i@(VTjJ+ z7zF?P=WqWNn56>C9=?zO+e?Xk&=8cw5_QrR8wWYpjOMfiW z@4JRQnrEa_>rz~2^ZLS4p{9ay{ln|{4R$=&<-9k3WA01mP~xHVkB}E5PsuLxlVF`~ zZ;4y?BFD4xF1y*Fgkeudz35bgXwXq-c^25Wz`q+gJZkD$cecMvH;cx4ZfXopE=axO z$_y2dh1_GlD;W&Y5{YU&THS#&QxuOzuthpc!>43O79k6~$j8Z$OTpeUP~m4G&4;}S zDm1dT*j1WskB89`&1n%Ax2$N3E4EA*wrrU#^4?n3sJrZdv4Gw>pyXb*%t*h#Wo}rZ zYEJTWp0yG^YCC7m$QYFsJy(RqE{QI}lc}=}yTiiU3BdNy@K~x})6&RV4^0ZQY9ijp)l;GNgU6=e;pXHLr%T-_KHgygu z4|lFWQiN$oD}KI0nf4PZ&9!8WMRE;J7l%eDu&K@$E}RV zyUqk*tvx6)*de?1eZT<^Z_zyvV-}tDHtyQ1yIysm-t$mr6=?T^ z^OM$u&#Q&xW?;ka_FrCz^nP30g;f(zzZ$h^tNO;tovr*8`x?8^Xj}KI3Xpoih_<6^ z=DxD>gW%I5}6{Wk z&Cu`A4ME{NcZ|zt6*Q#8*jdCQgE`>)7KJfa?uadn%nW3NX%fQ1d|Tawe|jabbAobX zGApNRwi0-Ct@t5)18)%^^BjRY1fn!4cocwWo_U~T(tU(b_UiMT5|!DU6#q!@XJZu% ztY7V9{PT2n!;*Q+?W?aJ=^YWxvzS?i5RZYq-f5HGFiz9kdDh6VGMJNQ4oIi3YT76% zPU3sOJ1mWsVUAS#a__pR19V%oCYj+7r@M<0jI${m1t2I(^LVEA{Q@@(FX5o)5%L`5 zXa^F4Cp@Li0_K=*oeC3f4`A-AA#2%H+_`mMw5jdY$?ZM^mvojGhIdc|=2;y=#nFwQ z+gvytP}L3c%)I^amt=QBzT*6YS!eedIA^)R00d;l?u7W-VuYSKnG`a|$Q=TAFeyCY zz}+QkI?TA=%}8S0(LlSXKzNju;sMI2#o$6=*Hef3i4*o1Vn%eo#Di%w#n)r!@JT|>P1hRF*QmozKI0i5# zDTpx1VtCK9*h(J4v-XmCmZf=tBCw4nAj{R+w>!9QRPKAhN*S zAi(n*Mm%}LuyRsbXwC%+UNa)15pjnpddZAQ_Pj;RgbDvoc}W=NQDDt^xe1z0AN;*p zVn91VtA(iL>ugZ<+N)x0BYx>5xs~|k?Y}zv6)!_PEp~{T-~p%O1yR$OIC?Kp_C`)nhL-ckfA4PC56iRk~UGG=6Q}1dbs3Q z>y+??Fri}s6vX_wozt%V22S0SzpV$G`+i3| zH}_^|GO{19v?Nk<-k5(Fov5vx?jhJDr+BcZf&QZ}JgoFZQlNYcL$r)E*g*de_xJ4h z9|y+=oA@7Vc|^dmS7M%ln&<|hFiWGW428XL1!s|6rja3Pd9p{){-+{~5ld)P{v0qe zBrMD@&uUqjG(yWXLCf-AQag&1NqJu5yCt#30rOgp(qBJ{;Ix6ln;X^H2e zxHp$x2xIihhF(()h%09;y#HAoQydah0LXRr6k)6<$LwHeSG4q&#xTr#0OJ!MhzZuK zm>?UrG*_S{5uHT-Q{+0W2bbk76qn?7{)RHlulz=zbv(I)(XX6oaIT*(`1Y%bFL#Z`sTh4U7O(G z?D*^r6u4|Fx`qHhqe8>>%{?GljEh3j6#QCN-^O2dgw(V{<*A*$fyXF-H*@-eH}eZK zx!MVIFdPWZ=t{@oE$c6aq+n(tAm!E|48c|X@Ok}(*3stCY@QpOi1A?pu-0xm=I;@a z+DOVcp6jd7p9>w2f!tBsIFY>%thMD{*Xpasvnct8N@RH*!<>sP^Il%5Yy%JTG!6ZM z3<~5fH+QvF1ZDQ@89oPhB4cnl&gT@rTIH2Ak`t4o|E7zoH7b zasTg+?E9aCgN^^!TAr%?A9Iy(=dG{nXnWc9vD5;Z8=k-3?DbWjhW%e!3O?NZ&%xgD zzJ335GTP|>*7CI5+nO!8ri$W0kJ#~7{MolM%QV3E1#&6Pcc0Xp^99jx?R~9Yc;Ky} zFLAl0t?+i!d;6L;rpLCWp%QbkqetcUXo9}Hfkik4!T{Vy?I9v=+q!q7e?UHblm-hXt6WqyWbUWi2uc)RJ}`CMpcW z{Ob&VVHa}eLf`B&64TP=;4eGXE*jE)924O_!n7%K!g7{?^9!z;k9fwJe4YTDfUEPf zUtR%{f;+^}KyGoy{p%o(=dSU!v|w*Dm|=(;43M3vU0eesl_4@C?MM7&=Nj;QY}^u_ z-G9bB;Q;uM&(YhnD?XCCX=yS-Hnp3ru+DJ)4}x+cE#fJ1<^*wQc2wHca*TW&T-P;) zOyP!;2?00}`W8MTKmX&x)Vek!PV5Qh!`Tvj>AWB~Vj5u%@L86Tj!S#Xq&6D?>ks=h z$bXq}TlFyZf1`sV`~G+DWE1~+Jx>e!zdo;eGwb%Vs}+!4pAw{Sio#nmpY3KSCzupS zTG15g|By5((?V(A!B;@0aR2C-%x6GvgK!%d;%z{DtgIX|W&R9i{_5&;P48ijimJ}( zx9Yx=Y~t@V$tIPxW-!Mvy75*N-zw|oD8hbF*_Y};rg82cVH)SvkfzBbt%8()v+HiS zR`b(L{~zA|^Wem_|2)~>(EoKj_4c1Vlm2CGKeehYln31$#bn5GJ>#wnOD+pBWuxY) zE`3&GgxGz4nTzv0Pm}*iZvqg|{|`(9hSFAq$48a*t#~QCw-+Fg-)j=YY^l()8W1m0 z7N_?!loSC7t_oP7@jSjl^w&#>W@&PzWjUyTtqfUP0h}t(oW4d>a?%06Ouv}B|tA~~rO$GwGwS!gb znoGqfZgo)Q+-=>0Z{N6(?nI+jE(xaPmNs6~a!dQLbz5n%)mjPYQ?R>J^njQ;v)1DB z=+YN}i!=RepNQM=&OhGM!2e|ift3z{jpx6;eMkQ{+UWn*@_5gG@_I?mem{bMxt5yK z?0jGeCAP{R@`LdCD1Quu)Xyw?g~vxgO81b`bz=xVOc6_OeV@*y2p|lXr8em<&2Qrr zc5?Hu$JX_jDpP$8wVzHQWo)kflyq4#B(46IS?u@Uwd6y>7f~-R_>fae9jkise^dx* zc7yb%ZrPmTdVCt_f0>tJg)?9i{XaT#=>KSA|FfQl$1xN04SrSA-3!HUpXIU4peF9A zx!S2LaQXy@L+L3a;o@{7UHRnA%J2!$O_zCDUC8%Ups@0ix}%>~q|2dksZ1`l231xx zdreU(kg)B^TH=&yHpeOB4DlLeAR#(+I89)Fug4NvT$fe_DyC3%zkdCoJtQL!Q2n^{ zqkV_LY1LL8p$~#bc4G3<|16DmKf!sCzDegvA;JQjg(3a*A-zQ%nL!i%KR&SU|M!na zha398j>oY7rc*wvnDSK^0u{XL+V<-4Did0i-rbyNSNe7jb^gHxf9~GR$h>ArSEPXJ z`dHn|G#a*${hJ5X_g$6h%?uN)d;t?&U>M_nqcYuZz>W9KUa9=9o%2*1Lh4q5@)=I}X|FRVTIJ;c`S$I}4p0gt+tYzxd$94c z?^@bymhM#IaG0YkCAdiQd+lWbCt3rS^EkdtV;u5uS7otGec+{w;@$zKDDJgXH=OCR z!la0B;uL3Z{T0-uQ!D(^moSNz!L3O2KH%MohE5eP8-lMO!AXRY0vx)|`CS2p`J{y| zw+Twx$}%A8i+DIggwXkh#Z*ja`SDHpjfW=d-mJb-+=j~qR^N0hq$=x`)iGNd!aURp z$kM#%VF|Ei9t_Au8qa5loo81ERcov(#H|pTr#EO7jB0@FFNLifk#wGiD*+*JrJ8Dm zC{9{YIL~o$FI%mkuj@j6dut52V3sQu)jWKkAw11gI?{wi7YHCKkW zT{~2L$F6_Dq_ULus8r`f$T3MVqC%u?CTv}QbyW6Qk8F<51;7|!By z%tLw4FMyF)O=gv}5L#hJ>Q6vbV#7#OX^q=kUbE%0AZSzDiWTe))Y`J0OOCXlO`z1O zHVnHq)8RzE}yvm_e$vWOV=S1%29!MeD$*boDB7|``rxZPUef4vm&NKi0h*Qj7 zQ%mcB8#cB_y4`DGpuCZ1yFbPyDs&a?it z5tJZpGY=r~Q(|>sPW>26Q&PO;F_!@*K**mW;`5v!pf9Q4a54QGuVC~k8mSjA>H61t zTl(mss3uFW0{$s zdv+UJwYt&ZCBOO$K=3wAknLw}I)=&Fmi^V4F_spLYH>^ZMUepD<5S`$d(>ibm%WIN zD@`+ZpMl@#f)enF%n3yb=#W@es9SVTn6F5VKF@J3)2SJUBT<{#^@%awM%SQhsguJX(@(jG=dL9)V{kfKUHAK5ZP9TZ?%4 zpt`tKdRLkP=xIP4|A*MVm})-l3D za^tJtl z|F@RM<^LC#=Y8=0i_7yz&G#Anee-jYM*Qq&? z=_NLt%y{bQzqtE**z@1$@W9Fcbuik{|Ft|W{g=1PJ@A0)tK-MR2hokyfS>n$};%lFJ`p?oJK6Lz_ z(XmVaPd52~*7LaZpQpauZ~(seABG2T9J^eACzY*r#rd16?vP0S`UNQRIch_$AB4*= zAO`k5O`A&AJxbM(>aHmsh$B^usjhTigE6W;0RO6|{|TJ2%k5CBd=_< zE~T{5@kR>&L7r;*uVUw2vBa|v7yp0X6aRnjXcPZqEssI}FX)s5I_H2-I`{>XVpV2f zEu=@w6P$7M%^L7*Qa10+>?Vw%5+1fglxN{OEcx1k)#M!6JdR~9nQbe~LtS*S+ISNK z4wf4xLxL$|e;AT6cWNwPK0yT!YQEQJr1k*#0`dSiAK+bhRLrkN$p`dDIQM~_~y z`wYCI$1`j~nC28f$S21F5sC7pk7JBO6!_szbJtPLNX6=nRMD!bm670cvax0@NegG@ z(%eE7_iz$9nPi}hERCuVS07iSr(t>R`f3khV&hqDn=x!XaX){2F{g(AC%8E8B?edn z|34WW+x&kt+T?#-&!cW0dJF>QTRD%H>w5>&JL}hb;cn*)T_7O$q(HNPaT{-}D*Xv) zJMGJo0>*LM;`3~h!wB)>MpQADGFh)vSaRueo4{sH zXC9ZJM-|J=+`Y8{%}fM#2x{hWy0>9xQLHLF?-`6`b^$FNlV%oA>tEY3)O;buRL3%F zB8!~i1E(PxS}AFnP4WfZ6h)wNOnfBWVl#*yO+cyw4D=mi&Nu_CdBei@goj%) zJe)3ozelrlfp{Dambf)a*_wt~7T<$30d%i}&|>OM{cC~ewb;`QFpF^IPKDiP;DeAF z0Aibi0A84v<$N~+Xn_(&dj#ES0jY?QP61w^1d-CmOi^WawdO4Oy0&rzBivVGRIDuK zS#48~BHo`4q&Q<0sqkDH>kI4#inPIOz1o0L`O%VaSlAYer`HoeZFsfyI3biLLaS>% z&S2|XIQwl6oQn{uc_Wu9mU}WF_AC5Nn|7&@S`=7UIgn&|V zuc!sm*UzKX{+NU4TkAta%VZsaKJ}rPI*$^Jj&T4wg#lQxf0Zq|Ni9Q)G&_r9{Yc8f zO4XAH(50eM-VLXa z{CxS3m|wwCIw1D zq}}ZBxS%tbu>if?3?^Vp?Iq3w5Jc%+atHJ1?D8UDn!$gu6=_64-eR03=1bLQ124F1 zRze`IbF??wg^n%qXn;T1)lTD7I-vR*5qfTGpxV`rk0ARlc*OON)=)5T?A5p3yB$wJ zWf$^hTN`~sE%SEMx`WDZ4IQL;X*|Q$Sz~#x5ly`f&2}>oUzuv%YgJP_TvuAFF>p~g z2Fu{IDUvUnOsy4Xs#%O~7Y|H0=0qfL;nJx~EnIciZ56%xh>ttF)xH$XlCsP2-oRS~ z$UH|NNm&pr5EN6KOh~}On=_%IB6dFAPz|hL#Q^#PYoGpZIgz%6!0(B*eD5NJP0QZ> zk${%!T?9v$FsRAcGJQbn*U9f?OttRT10B+$37O(t*UxrKvTjRE>Vl@bT2|Zu4}i%N zC^l_4hcJ%QyUQFeaEvDC6$xR?v&6eaGg&I~d<W|w&Mb9R}`j;0el5GDF$FPs4dFxzsj;ZeYtZ9 zx=STVD`}i{!KI0$0hwo6jAke)V9ce!0Bnb85<;Wk&@Cqfx5Gm)+B+F|{HohH4RT(h zQ~rmA*^qaahWVjzd35~Wrg$#dTZB;d>hm1NjqOlI_>TmCZYVgY%Lihe`98YUnF-1i zE)YnQ_#Vs?{CSRe*h^Api_#7zAI7sZFWxg^+LG2yQA}k4htf?@aVgtc{`drxtuibx zs=*yh3c_>(IEesciRZ!p?*$m`?H_`0%D|_`-g#0|w@C@r(>t&o zBRb~7dOu)2=u^7;41Acv0+4$W7R>COt|N-`G^cZVH${oe_@ia}DeuO*UiL#nUi zjUC2@L${TF3$L##UchuB3ldZeake-d;_Ooe?gJ38z3yZ+U^Pt;3w|?Tl33GBY zH^G>51FlEjF48NOx5!^42t0eXMn5Ae*6L*bA&frgqEv<-QUzxSr@nOZQcm%kfw*Jv zDW%*}=WL&Na%{C6uwK7<@cvXxXYn1pCjkiFG2Z_MlNl_+X??1th9R^{!DN$M-&mGT z$y5)ZO?AJ0dm>7)s{{Y;=hSsLgSY4+Dcd4{3}%vq|rdd~Ol+Y|S# z6R}teRNQ4?!Uko12g#`P*a`ImJ=OF-N9@SOrM#64 z0Gr}J930s3-%gGXHu0a=@)-30J)d%!1AIl&Z!DlkOZKf%^iA@$WZ?2x+eq~zo?(~- zT?oE04wJH~RLR{bz3#1|G>dqwTzlHk{r({Hs|((u1-new)CR91j_3J_zl= z#QkuZF{+b#XU^Mqk(=5FQoHC&0Bt-Sr!m#Sv7&F;HF4({Rig!qsw zaD?G{Y;i#_$>!WEKj8h+PIf2RJQ!F475c0|bBsH7pMhynWaM;rcY=%Q{D!qcOC^x( z&TtgP=nm#+_a;tncK2?^;oi~c_&7Wm|K;dr1aA&QcnJS;JUTr7%V<10JlH#kZuZeG z$wRGjWc;1Q^9fGK?(O^raJSkRT0!`=tgVCXV{y#e0=>OO9 znDn1dIS_N+4;OHj(c@(Wo}u*451_jL6(@Y75B~X_&Cclyu&38GgF~CZ`W)q~5(WjP z6D$E)HWZwM%{C>}d#wtNruugyRF~hj^ppb*Qz*~NR+qiRp|;v=bdeMD`a%Q0q70wh z7XU`l$b7f+P{FBd2D4<0>JBZoLr@14=@ovs(A9mdgNh-xv3H&nW^Cvy{-n zS0>rugcTBkCkYS#1{sn*J|)*f@YB2iAD=F+!5zxWQdLnFb+GELdjt|Ua^C7sjr=!- zIl9c#5OEzJ$zZsg2-tM~KR&SIe~k7I_crq1Iv!L0qf-vVoC7uKD~o`>mGpR}K>uiZ z7X*FXtUqzA7YxfK&kt&CQdxhM4!VZr6Z)+*qPFeTF|W$<--DM`)BghHGn_ET-=A|B zqDz!x77{8=qHZ~18|nX%mH%&l|KxCE|Gk#Sp#LArDFnF*fzl~;-X5w~ zUx84!GY|eUbgTj8ExOn0(qFBrarf4;BLCg0DjJXJk}m6t7p*E6X)L)SU5F*lbYAJA zN4F|}^#zlH1R!8>P3#!*w#B@{X4#eE>C-Q+NK$ z(m0*mUu8Lh(RrGXB8NCB26*1_;C!gEQ^)yvrR6u)y}bH+k-k3i^Cfq5|?#m z@XOULx;q7!oQSN>Bl=0R4f04%X8Cq5M`+u7Azw93zoml$c6)T(F{CPWjzfMv*PWlJmVGXt|e zannQCW1tl-%L*Qo-i8_;YwZRMm_^J)9JNNlt{F8!#d8o&QFu$i6nIp9R+#};&0(7R z&}As}oP;MWET^pywK~DjQ_>sls8}qNBDiWwshO$)#I*{yu-evCe4Ax3Z{JmmnXfhc z_D{2I{e2e4?#xT0?v?DnTjg}Ipr-v-Ej#Xv;G}pFm0xm#L-)QQI+a51>EsWZFdV};zJcNGOA(twXJ2JHZ*zgPktBv}Cf@({&d0+#dGhPb##nS_lLgPg z&r{)OjIB&F;alnGGYGOpC@XqsU5mjESqm+L6l8jyoUfqB@ys|~IJ=^x@BvGi0*mR2 z;Fis-0cM$UY$b?gBWr+HOP971$XYvVfV#}*wi3`~Gi!i38Iu*kWi6}$QcOaESAhs2{Sp;y8)#g%k$E5E1ewjSyiHnbrp;^3J`OrUU^V8Bq`M&fffni|LtaMN|D! zhHGhgOPN)Rd1y9Z+1kt)Wc5*@7U57EM)kr{%cOFFc@Efg&5iSP_P=lzpXE7I5d+Jp zVhYLo-`?42KMm!?jA%iH@TDHsTyMo4x zhXL506kvN>ubHDP#vvr7C_Wl^vy@qM4o1=N4(187U~XJ@Z0*tFTArQX&fdShc>6Qg zxM?^e*AyY*aKTKp#EGg%{WuipQ^OX@CZL~-fZEf`cf1i0&~>^L(8tpA z?SKrBp;7zt!qlL1B599b)2G>`qMo?CIZeo_!T6025W#vuVW#vxiFKs7rY=<_j0fjlX&_mm z$|a$Cm1e&{X~QntD=oa=qY3)*1{UEI1poKr-p*gHe?R=T6{w=UppoT}y+M=&jMIDu z8T}y&3@=sR5ICL#a$nB8>+a)Yr)f5cg&N-J=ps0I%TgJET$`W zOB<=^SG?L$CipCFm{enX(Ln%q>)Z#M_+ddU~4Ae_Rc^iWykL`S0L(v~TM@*PIiH{VfI%IQ-`E^{=-UqG-Ml_%aW{tQ5H zm4>%0C73>829O?S2Xj!C_pC`vcxJF=4jg(r9sOuUIx+*4r4Jsm5iZXwIklW}=U8B1 zKzyYjnf3IqKb9EVEdNO}jt9*Db!hwl?d>0J?ElyD81kQ->VCz(8atrJCis;@>09)h zp$N}sZlWWC|Lux`jz&V%HZ2nPyA~M~DjH>78%?q|?Nc%^(^RvO-Dltm{~MjER7g3R zpf966hVTFgLHEAheE03!%U}0j?v6~~DLv4Lsqh-@{N{H;N73`?i;-OcdW`{TKF=CH~|+)fhH&iH~}~J1(iK`nZ5l(TIki6 zEKN{S$kzvl=y+hu4As1}d;~6fp(?k+X-?yUPkobP1r)mKZAb;&jD}NLJ|}1B_WXF zy?|r@mX$oj2-92*iX)DFl)arA_AsKH7%~6FyD`7`#7(s|#XI`Im%dl5g^IGD7av|}ifd#qtEo{e+i7Q{Q7&x!5?BGf0OK}*0;LDfk-I1&1VJt}0GJ0LkoQ}72Z6l={J2Jr#(ABC)8pSC=TbbkeWttZ-UTWs`2Ao0G z%zPz8_;a${68xNW?B5g1)PW|RCmm!p4V-x14ji#c<9WjF2z>xpc8-n}qXQ#rO$e;? zPqpN~0uj%%Mks{yVtR#mkPeTjD*OHtlQ3PN{Jz4N)g6Z3ssXD0!SLF0kyP1m369fr z`N`Wj9d|n!j`hX`IDN@0Te60&WgD5*5WkGoP)2^@r)%c7#lJ8TU)rwiD1b7n=da-N zJS`AtybG4rg`bm}(a~*c4=SGX8h-9PMRA7m;SAoQi==p$zfIGOuih3&VgJ8K3Y3pw zsK#KvE$#Ze==KNFb$enF4U06_O+Ag5T0g6FBv_0n$bYpMg7_IuVRlyT9lm_^&198R z8=)*&?hTU@rn%YDmVb{)9XktYpd2oGx2w0q^hvET>-IewpDH_uavN(fJ>KKdAO2}R z|0UxG&i^txcH;k?>>q97|E}dR&VO%TU-f(X^T*V9Y-c|Wy|VSGo@2a#-v%} zm{sUfGe?hFt47T_s!+2I>eDvk@L-Uje1Y<%aLB7R^xj(8n2d?7XUsGmBk#;B*oh(N zg2#ih%4YhnBDXw{|M%!*?`Y)se;;i0e`|RR`md(CUoKD=`{%Lo0&Of0&k=-$%yI;c z*X0yVLEX$9Hr|~Z@6M&XJ9YI`9H)0Ex)RH`R1}BtoD?Ykkk3i+(>#gT-KFyO3_uX2 zcL|jT&Mq&4GTdK4xgrkHSs14Cr1+5Dq9ho!XUA&!pZ4Q3D)!c??PkE=+d4#h7pqC1 z6kuD{`3hJZ)UO~$$pDNT--6n0pC<7=(_)Lpm~J~mIde{Bj{6z`;DoHoA3@hDaE}Qa zz%kB6{t2z;{Fk;H`f?ZP(9ktYzqJvO07dhcWbjDZOnm0s*YCy;g(PXsRbXOO$%3#EPi(wAcsC z-d$QjfG_w3hp|VQJ?S{jOA0jvziOojfH{(;xwpn`lu2V9v*tFA)7^z0|1N7U2$cj< zP(_Ok$^abVV}QP7*vNF|MB#`_8ai}J%gAWQdwWY=8#)b2v17u_Z*m^5jJ8hrcPGVN z6=X|X8;YiS&=Pniv05(N0iNQghO8tYgYyWp{snOIccnhv9lFt;JDs9o=Y!6yEmm#B z8ZdBJb;Mp`R~WRgzun*o4bRIhCH0jsUNezE9S~%e#u?1G^G#~8)Ydo&I}ARQE5%U6SPfeCq!iC3kJ zoi|=|%qr$8&4JEexT8>PX;eU9YW802YwQvpQ z?5O@xHr{&t4h8^_ZJZh~adKmh0A~1C3S@bE$7q>)TXQ?;?OF7F=}v(MY2N!rAsm^r z;;hb^*|EzG!!#)%PEc-ymg_oGMk{Kz?9P^$HRqsIGZgt^=~2iA`W%3IVYgK-Kl#O4 z6V>DMEjD8Ynp!d^y=v`R3(aW;1QA|flIDg;F5dBTxW9W*q%pvcDOR`UZ*qdP`LVs= zn6OO`u|x3FyZ~dC!_77G(mBIG|FX@uo;nDVG%wELYzl2{R)0~u{inlKB@FS=4an_h z+I3MVo2I2E8s$@U$-*F6S%~NWiY82ShN4t)#yrHl4%IS(nE*ygVXRpLG{;AihmSUe zFwuW)@IyDIr#r(xN<2>vnXjfWQE@>p19_ULzEmoEUvo7{$k^CpxlOi24jf7ya#Jzh zJ@Th7{HN&48_d#B6#IgIN_4Ceb@C}`9r2T6<;M>E$&LXmF*-N#Y8OnnE6*^-rPGIX3ghv3fqX#ZS{%+B|Db!RD!Im~Ke~Og$ozEL?ok2oEQ`?$C571M<<&1mwg~e0pq2-l=SO&2 z*ncd-2e$t^7#%tGe}^0Y@3lOJ{m136=RI3~cyrl3I-3tVik_`Kwz5Si1?p;4k|NFF zgh4P&N`bmYe6Go^UW0a91FuzQ5+6<`=P|@qgdsVEhKNAzujwThEBGR0U2>5rq<<@Xso)=DjPBmZB zx0_Tin^Z5=y4UY5E&uVJs`KAVOp1KYw#ZNOXo8B}Pt1Iknca0f3^ttq4)<;U-~Iig z{f+)_Ee|{2y+H+JC#GN36t8&tdx?p$dWPlVQAfcFS-up`xA-5Ny=Vu$Cji9o2E~LQ z`S{=JT&U93J^=tGNm{U8MOp2Iw?d>2k_;bi5r&q=Gh^-W`#(V1(io3=a)n|RHL!(1 zW>%<|CDI6#!vlPLhE!oTwv2pM0Zz5R8p zzQcxZ+Qs;9yebDM0Kr*&2k*&Q9H)1Ib2K+Xm2H~}@Il!@!?Cb&GgS|$V=&DUpkW8+ zgDr7X_64D0W^g6`W;i)pKpevx=G8ZYU;dFm^+KOSVf%2)+vV--_)Rc0lDB0_(>ioU zSShU)C$<>Z!&r^FY4bZy5@iu`c~c-iK3!bbt#dkYbotyM9zZ?dW2;^KO;U2L;haFz z3fmnPAV!cBhAm}>jjgXlI^UI%g*;=~8~`5h@yq`?PIFw`pU04p6$F3rG~NI2?OFLB z_eZ0X{f+#;j;CId73(0R>);_}SRPyR(q+n*Iie);m-G(hmjapq1aHv-<#tGGBbE)X z=jZ-TpwYUDCTI=pTtEoe#xbMcSnYP?-WCvb5O=jj|K2Nb^L)?8OaJp5818;zBE9bV zxojM`2Ks++GP3nQd-Ts!9#KbA$n`=8Fv zl|8`jGjIuWf{1i|22gB(=j^B*PEmMEC>x>G_^kei^2lBr|4N$<-hZaH=c^_;H&~K0F`&nvWx=b ze3iJcp?oF0Pwn!U0LWL71*vpbb^N5PAa`10?g5df}aYEwN_Br{kdjOjM7#q zBrIwqT`g_D!0`2quH)&RS<@k->G1?UaoFWL0Dr;dCFI z0<*g(njez5t!5M@lM%EPy?u}9FwyX>{OpF#SV@?#k^k~}j8+Z(%bq6r@9@Bi|2R6{ zKir)E*YX(h-+Maa{Rw<*0d3?w8y^pEK*~C5K}7X12nxU!bgs55X@&wb{BxepGuxf9 z11M!1*KTwZU!N+e>5uo{jvHLeF?PhJ_98-*<#x%U)VmS8sb@tJDz|g zRvHSIPwzehB`$?fqFy*XR-s*@$bZ37gCCR>`8~T)XqXtwDrwcRGA=8}D@HIhKN_fD zuPV{OE35-0tf!vQ;vk7Hbb%c9!x_16FZ4TNd$;sC(m$hGv_}3Tb4KP@7Xh2@e-2M< z|DWTN!;SyXS{_sXCuY1you6oNBL#X;(z77w3TLt_{U9pn<93cd&vA~TW-&$40ouTI z0NB5S3i_Jpk*JpGgf>7s;c7I0CsM*$sUz74?M(h%)!`ra?yQFXuX^pTo+kQ#vTvXN zPd4ZOH9egE(>-%3l!g7+0JFU&^pC%4h67t{-?Xrzt!h9KyxnKuf@Oq@@xKvR@DNIx z=)T4B)$lR-%-5!nyb{+4#%J%12xEqn^osir_FL0)a=kEniwTg|6H1#ab+c?x`sIbD zk=5YQ?Adh9^H~z9E~IMLy(eJyu+n~x6%Rz=U;wtabi5i7+C?X?sZ@>`OUn^c^T#=Y z(LI2wPg_%6j!#2*l>>^P&+nxDC~GW)31!t1&L%y)JHbATbyG$&F^Dk{Q@5-S`Z>q% zy*s+tT>%Qb)HJ9cOx%vUP@<*_;#}-1K#B@zQ_pi`5$kXrTZ5d;3oOm*dg# zhW@YPVGCdS{r5uoMZAdi4jojc0Xe$Nj1y#+(^jB5#1ts$N>j|f%BBn)Cs zL^Q9msEXo6=2@2JRwg3P{hE0sV6pIm+xZR36I38F#Oba$_w0ys&rYF-^#`?n7LgV{ zrUHJSBu=YUt2{xKUjv)DZBJNq8=`tMJr^_%kcz<>aXWjM-`fHGz23xTk9C9D_IaMO zxC|Z_6<^f5rh({5!CA)hTXY|^viJXE9cwmE%cp|>GlH=D2}Tj-UeaeJZS5=zH1Pl9 z{k=om|8sP*x8eWmcm)6Fimx5!2^#Sr+C|!y&lq;nyS|IwZxI-ubvw2+LEEY3r9Qz%Y zz!GxPN>ROT2w!K4Q{~CpG>DwU=?#oQz@{v|as37T6^5ex5Jr(S5wd1LJDXpO0s2y) zJc03t9FE606iy0KBt!*BbNTC+G=%YU03*H@H8ew_tw@gw!IByMeFm(3_pHA4i7pWe zim|vPW`^?wFHlawQEf%}OQK>)`O7!t_VQOt(W-?| zA>e2&REY8|go^5=EZe}zBu9h{y(%M-uAY!^im0F$Op78TRd#cK+*{Pg`_!NRvowEr z`=7&u{S#aNzc)JCod4JHSiIvhRmZ8-xCL7|OC0ha>?GfT>UWYuqaOqHi4OF(8|Gk`Ss**gn(9(d@|Q(F6C)k)F_`D&>5 zwtWAJMfnA+e^-)sPfoO;D{t~Ky%3@)`_XjBa4X}a5Pw$ysSUdgsAX{vz*<`(uBrCM zQkK+!ZZyLNV9kwZ7-}xs3_=$63_-Oc2B3bo2VZM~0qCs9ydbjgAfuoctdr8~J}Nk0Jl}WdOv*=+!KM+8zM_ zunz%}0Q2`PZF^jhdlvuK9H!Mr%-0#1b&D**5BHf7%NoC5!R;hSWWtdEVrUMvxyuirUwAy zOC1j&=A~S}zBNiuxq^F5O&dGk#luEUf#zf*Um12gbxf(ACCMRsxKh77soKd^Dx;km zEAk?htBjQoT3933G9r8SYW$Jp9JO~zk~IvkBx^a^G_##wl5BZd*QAm_DDNcMW_fyDqIG=FVUL)LK|FL(n zXUBg&I6U0wf7kL@_8*~C(e=R!!&2Y3W;+m51D$bgP^ zS8+e&mKhZ^p-#YRCK1c-f5R83ff6+A|Iy)rz5kDnPB!u1*78*Bf78{gM@nEc{8(v% zHHZh65&Uza>qImD>a@a>Q7?skH?o0r<{S8Rsig^;$cfZ0yP@xn!8@3xQyB_?Ty^KS zZ%@2ENh`Jzg^&CAw(`@J{^RU5oZ+~M0*2g#Rh zJvJ&|!u`-_;smvv;lEJ+F&-s)8Sia7>f(boY>p*KeP%Q=kY8=-D1U)3kK z)j$z_btn7gNITMd*=Y%gm*AUya7tf-US)9OF(eWVQC7L#(Rj zfHkIAo{l}Et6FlHM=~#eIib8w6WlFUvTi9>Eyjz>#bLnyIS%Y~d++DP`+(Y_K9+~x(}nIVEz|x(*!l0`&3_AYu%52)^Iw?<$BKwAn)W82I)DX;ZqR-kV4K3!_nr4R6MCX*kstrTYsA)bUW~ab2l+Ky4(@^| z3|z-;(SXm;TYZ#X+v2Ck=eg3%$7zW>ZhL#xPtmeOX}2zquHwr;uElYj!s3`74RNCW z4IFm_)qI+B=T_On-T-V*wBP@Ie7Lvg)?RXz@~KsmXibt_!!jJ<$33va0dO5+)wq4* z@-JQ9IX#if{`u+L1VXq}i{W=Nu=l@dY1#h0Io9Us^Jy#pU1caF%KVG&i2n5dBPaj= z!QRoqM*dsJW66KYMHA2o??w8{Q22N)!EEUJI^h@h89FVo{iN!w&4~P(RV!aXk>gpZ zFlX{ijY~{l#y-5?fqr*;aj7Y$hu|wna1x=U0Q;^!zokD#FUJvqq7t4x&;f$gcEf6Y zuXHKr?|LH~JmRM#|1URY2LYf-|9`T7VDta|P5z(tJQn{iqb>9+0F>+IQAz+h_SxsF_x!Oz0MQ8MdhAU39s&1g@&p(QQ@cqTKB}9~t{9gv>?i3EXiT@us`rrMNjsO389*h60*zLXY{zOIh zeT00!1ioLMFHyZ=$bTk9@P_wp4(C78Q^)_$!Z4jD#mZ?Q8tuPMZ2SMw!D!?EwU)== z|6;-)CNidIypO2GHBEh=$dx8so*2gROJz7qC<@etwX{axOMpwQ-)`}H<%oP?e69Ie zGWewp;;L~l)f~9tePtJqCmf~(`2oXXmiVfT#4B<4hYXMThkyM1zesa9LA#$|7$QR6 zq*1+tcf-@f|MyOgEdIYY+S~B|wLFaAT>g4acR8DEz-D_DexEJEp|)^-ge0)pB5WgG zIFR?{>L&{E!2Ya&_)~YD)_S(n^XQ*U2XMzT%r2_9l>R|_1nMtqqKHWIgqCf$O(W|z z=kqCNhmSK8H^PVPJ%Z71IWEwNq2)_n~}B497GLo@;=TBEN5Tpp*+uccgTIV9l&Z^+JtQ4T6%0r_&=3wqi^8+OF9e_#R;Ky7+6oI$9vI-*xQbvJY5$TGG6uub@c( zhX^XWk@)_=Prdw?jLG@c#Y)0ooA~b|%l~6^e6sQXSkJ>$Ja1oLf%B`2l`eUNsK{50 zN9R+c?4i_W31!a{0HPc(P|hncrYQ>Z_roWEX{lui{x^W!LV|sr!W@Z@^iO)Uru8X8 z*b9+yt(BB4hu)K!NJy|gM9b`x6tKYIkbf;t>2&IH1PcTpm?!x29DylJq8L3Fqu*u2 z`i~sN2okgdvutOP#`76sejDQQfWP@0tH^pTbrVm?e>^3D4-|o2-xr2j{R5jTt*f)5 z$nnj*koJ&r);xYDR&SPZq?pi}dK?z5+Mk=f)zg16yIBMMKeF%tDgEE*|JU;H`~NpT z^+o^rih1nxpCY6){g*@kL(~7=H8B8YB5(A)yZdyp`*a}=H_a?zP+idA0Rs+4l1AvN zfD?3u!Wzt4=P@Ltlgqd9G|>N} zgJb*tcQhL9ZRr0x9_{}3icdCRvkgjmup&dSme3D%9o&wtJ0s{>2VQe6y!(vNn2Ryc zp#Yc&up^KrY)B?wq|Y+|f}H^5sF>#o0YUH_+)Z&f1v3N_0&?_uj!1!%34q}8SEjH^ z=LHC92U-(X=V!mX+WCK9UzJVK{+K}>Q%$7_FzmSj%#DhsH=Hjf{_}mvB_C(uwFw2R2sWh_vc*!Ra$SxB;F<9JiWmX?EL@1 z%N$P9WQ@ra%(I9}r0zZgWSY)ny3KJMgB!%R+H){YbAY~JL7lRU0Fu%jAHoE%Y(^*v z5x|9R>?l_evv_QSs#RAH-$o&f`M1~UJc(>eV%>=*PSe|Y1_H@eZvUGMak{%01t7RG z)<_U637fg9DA%5%@YbYZ34mcShjDxlm`R99)5dHRt_AQg%hLrWI89LQ>>mdUniZ^n ziF>b1c#vnOvF+9~It+2^f(GvF-T3f(kJ9OuR#I&#YYm+BZ8mT19)N!GfG}6wWQE3- z{qc@oKg84i{P*k9PC!lezXwNl{Ez*EP5h7bJZ(-uY$FX9mX}Q*cCppruYCMQb5Ssk zs(x`zYvJ1Kj3B#Ko-G=10Vaa*R3yo$&by>)Hl)g^8p21_fJ`&+k#>S$;wH-QR=t8*Ytqx26T*vUqnI zUIzCX6tzINnSc$?Z+z^%&RAshR`vPDqel-}xw_z(MpbF4?mU*^{`^;bl*&+-;un3C)1Wbf^i77Kk z#w4KPNJwx1f@w;MOIS<;5D<1x6@VaQ>4Ii33qTN|1xryJWO@28MwV?JQppx5JOZk^ zOvd_J(TP8;*pc3gzHA`s9g*y0&HPT!cg;7mnIdN}HWQ98VGgYnrL!A_@o-Lxbk>w2 zt)f@0r+Q{ug-xxoWtgakfod%-Z{Zxl0`ll(KD78t4n5Y)T#Bz6yj52sK*{z&qaLXS z8Y(g`3k|K?6&gMvf5%CrFS=iuICGW2j7(FyiB<0f|8!18%?_*29--Flax1W6*j-kk z=)DHaZY$B=`rQ8c3dJZa(%j0`&gfxv>Dp}Vl{C(1LLJX2Piu8Hs{rBm@8}}mR{lFD z`0eYf2f6=0I5^s~@BcUQ-JSh2-t)E4qYyELJYB9q=|S0GVf5np486na#D)r{p|7 zN~G~qK1Wo9qv$teUg6h`3p8VH^{TdywN6msl`d)RdOli?t>hO^7anQBYO4+7W1z91 zEoh9tfMC~ee@BPz3+UnljTL6lQTkW#JIar{6`E3hoA}|~%Xg>XERNGVkS6gxAQ=kr z7>9J{5U|V4LCkkI_c8$SUkz>8JNohT1z@wc^X;2{lPe}H%?djVg1&KUwX%ZwXAL@7 zA7ZpVt^r##dR5P~{R*54@E}X2njws1{HD}aBvTh2nQUA4mI>>)lZ+?0h`R{mi=*oW^|F5+? zru^5tBfy_a{#(Iq;EyB!UA_6KO8%3}>%rwe5R^XffpRzh4pLz`;{K&VT_CKG2>HtO z+@CA3UgC(25i#(PbBi>QBngfgmc1$|c;)dSGulTjP6`sa~R z+sc2Y!n&Ir*yR6tvTw(K-apy+|E%X>RC8fWZckUhyip=o%=fwlHo@p}5nMBXhqr$t z?kyW9zkDMCHCd+d8xY2Cym}qa-r_|*ShvvTQea|TQoI#{l<$s;ebXf?(eSy9guUlV zU7Ts^09b_GmAE)Mwj5?@^!9=Z=_B)9Cp{Z7>yB#fh-&5meSu*iB20_rDNOD8DEQ4k zWzIvuZQMUTjVz9$A!lF!)$^s%a`d0se)X0AZ!|i#&;JLVOj5q~LW%5`yOgR`31u{@pW(bQ}ED{%t0Z_z#RwKW(Rt=TKbahdj*la`}R zQvZNKnj0U^;@HJOMV==sCV*GE&MH$awH`_1*eH~B)19P(dnss~p;;*~I*jnllhVQ+s4wwFH3TofaH)|R=~e7T zS?UQ%EUfTb%`!%|2!~0l2t#i@)XYabbv_!y8x(WQ(|Y1(nO|K6us1MU!*Uf-}rQPw@r`kr*^Q9j9Glz?D!6Zow$giv9;PiLv8KKr=V8G;zRr}U@!0ac< zP z&Hc|>9^?GS{2mIrW)0Dcu7DoSfHm~lBFyEF`U7EE?v$P3ZXhvje#FU7#x{e=J%Dk6 za(=m$=77Kib87NKoi0mMNm@{Op43j0G9uVe`)L)aI&l6j@>ovG6J`)tMmKaYD3YCM z@v?TF(zATKv&DEG$Ko)dVv1?tmzrJfmO4)J87NN;Mh4ea4>S6Rj7(rG^OdfDF8u;) zG|$2)$kI6b-4(f)V6z+Htn?r>&YM!o)$7rBC9`fT9%hTs7CHGYx1z|hT~)waoJ;^t zid3cjl-6-c#7*CxYl5TPca&Pta|lc(w7$9*ONq+NiwRRnXDK20CPpgWof@;YIPJy9 z)*nYo_pr3iDb~7ANM{fyu2@?GPGEd>8>@=_R!RhAK)kAzA>C7LMME`M3m=L?f?Ho3 z=!=4O1IBqe?mF##cKAp&<(lmMvLbk5qS1YGfa zHh*+}w5IhW*%l|+T;u%Fo@V)z9;zhmLe@0@DKLoprxj z55^=62X&#Dwe3>kkuFAx7CsRSL9BS0IYR5~M>CA^^8a~(1k3xEF$~UY2Tsqj#-X+x^XQ}5Jk(p~y8L3e?D$zt&oA*YW_gvVY^{!r2mhxO(SJ;>G zh-&uo_t^oM7NuwNA_d000ntFYo(f?_K2CEsjX>YAFh?GjC6<`Lab0r36L2S%iAVj& z1-5boqjyQ{vk+(;@Xa^^xfN}hs{g`Ky97f14x^su{ zWLgBLAUFt|kIWz$?PSazIXDIEC7FjIBX`el&^XP}4tvWKfjCW`vtM*=py)}KMpxpN zHb>0qlbbf5g12aa@+W{D{2-<)fgb_>!^a&s1#QnA_`R}VU1DzJO|gkj{!UoI81L|m zr4HlPIHv%{8BWjzeJKhM6wY&8+zU_XQ?+jLd2&YHrpfy>El#=lnECA=1m&k-PrVFb z25)eT3yjFAw#h^w!>i+Sm=OawHoho2HH_+Z!1>?a{r1*+_wwxg)4N|^y?=l4@|E@J z^}FBRzIrcS8pkq$sxM4RfAyuvq1AniXSgtc4YTte4agMFHYSZ zuzQ1(T{6|)?8x3=J|TM1uUZEvoTebSqA;_>EH>NuS9&uX4t3MbBAtg*6DX&>GlQIm zX`Z8ywXae9B+@%#omkw(GL=nZCM=Y6QAblLx=AUp)TQ$jgQbY5@ej9+IpJx$g23W; zno(gIvo!Kf0lkSAHRZhAN>!ia={z&!B8$!pvosox$TA~KWwgKRxr_*=CGSzngmB#3Szg%43zFAv>KAaK0 z*xDuqEWl0(f~WBRWA9Cy1*V#g7CmH%J74I9-wZ{`Ht&@vjz~+_*UzB_ zGf`ErvJ%w*id41jiT)cC@!p^7UowF$6F?%j+DJ)>h;ECOz`?QJr!z*MGQk7VAv^jM(+~GJg;4@_Ay8AZ`-8+$opimmDEI>iH9>AZF&KXoeXu(X z{aUsS^Z8VpP$3bRN9$HRI39&_b})8_^51eU{`~Vx7?qZ~JFLJ#eyd`~t! zJ9&f9$tl@Etq)Id0DklDaf;a(#pS%dQZ;F4EE@bqZk@L?zmeM}?^P^o)7CclLpmh< z3@3?q^Ddy75ig-H6tTnPw2;lz!>yBU7~N}@Q7@`|5k1PmA7j8rfn$`aE<-< z@px}`v%W=bXaTl2P2X`ixuR$aDasA28ZaZ`sAbo< zX2VGni~tF4(HPzd#Kf6O<^lf{bG@3sTkDfML@AC@ALPHePiE{dQ)Poz)UuD+6`>p^ z{Y)Eo-2=_-a|04p7*e~-@0_N&7!-&P=toWfw+u&n1#Sef8zyiBFjLX7U2LQOm52l{=w;BZ?HGmcRo)ERiBTJ4&4vgU5HmdKEHVJRzW;H80?=2pilQtoLcNI za%-JBwZhJP=7hO75@+#mg8wQDtT%jnh~I(!R!U;@0Z-kaVrnF=U#$Eo_ltGMSO_0S zXXx_m8p!m$d6>9}#K_;?jZ(~d7wFAmD1MyXBAOzO*avk0d?!z{Fr^+NbpQuZGGiRk z4-t;358W*2;?NnQcQ`^W^ngX%&6ArcGT-Ag1~P#+Cjd{T37Vjk1Bq0OIEwPfRN+;; zu=3sFbVLzjJJJzB@|4VN)q4l2519PzLbWmu2sK1r_hDW~mir*MVUqMaM%|a>CXTm+ zo^=g9gqy<@3Z5P%Z&~$T%;0*vw*==Jy}YXnnX2F&JXX z_>Y<C8>(>{z`Cn#zioY8F&6Q+|VHa~9H4owMW9j-2ol~e+$~c zibf1P1m^DDf?UX;Rw<4FD08I z7df@W$qH{yg0mOIb&IPP)K8uac+!G~3Ti~CY(7wF@6;Oy@wXU)5Yiw=7mUr2uBIiN z^ZaXpuCHKZ_3}qbauMVn0jbGyA`~y6#UxL#l!3V_`I?pku2u7fGK%i3xs2j*Zrxj{ zXkZ2tz|M=&(o{~#B^3j^C|2A>wFsGi1nG-}5O4wVNBv!~=7Pu7%+Hlp#tM(>?GP8& zg@OAZ+O9sKyn&nw`s^-J^Vlz7Q;fi=zXyj@Iw*yUsHYAM8ts6WpE#l^OysCyg4CNp z9hx1e21TD6r+>2>!oB%ZSNRmL?RL#KtfU)(ZDlm@Diq~^LOx<*4g-M0lMt%ep6R$N z=uoCBAAUB#%xk-3fPVlPBIggl2<2zVbPUS`!S(K)MRreM+q9TN!%u|l{>156?U+9R zC)b?fbhPct^6olh{)H|C!_ACqt+Wnl#uktfE$&wW$Qw^6JWzp$`YbfOlhEIbQ>@}~ zy&^Dv4ilJ0i1tHUA=gUeL>0-?AhAGPT!l`Ot2>6-e}{t zV;n3HDq{jKX#OQDY%gZ9PMPrOtEu)px!+15c(lqsD(<(2RsrAo7cvnJDyH|Rx39o^ zoFtNh7|tp!MnbQ2>_sywZL#@N+-Fape#4&0hsW6zs_C#vvT6Gs^RYN|XK8Gd@gk^l zU|ZSnGUIWAULto2T9knp-lPltfnqS(*!E% zP!GeGxXWhbyWp>lA(qPcfz9I#-qzV_#$H{u1ksg`yk_84k>Kt7EbC58S(*E}y}7SV z!~M)itZKsP^e3A1)rj?99^U=XV6xUf62|*_XN$i@oxWO$td52vcf9;t570Urr5AN# zuV;<{kKxw+@sx`DfAbV%$=6@?@!wAh_x~ryC*Aw+jg;SOuROEcRf~01-(>1aHMgNU z(T|m9NdBA}^+7#BwPj+fmU|_qDuWREge7IuII0vyH6cZ8As44Ie36?_t6=wSf~8vHxDs12 zF}DbqjAV_FE?Arcn0litNbtVp(Ssh21M?h3Mg)% z-+H0_^3Bc5XW%SRH=7he<@7?O?+uCpMQoOE02xpdYPuKH;EL$to;RCEUV>wONMYPIxKLsG$EQeD5pF*6IJdx4(a~ z=hOe=lhcm=Z=%%Gf3Xe37PuiVaKzj50GOskwD$v6S}&4cv>?5#xil$7?=8C)K3si6P*uJnWDVX>C{|NHyL`+olagS{^P_eM$~ z7N`|H+c?OcBg)%813~g8QTrKKq+P&b&Vyx9HDtZXYI@Yted#S*3vjBsC$7uSWu8qr zRdae&>c^nDyt}0ZG5dvc1)@%89=^7dplZ=Klen!1Q%u2P@Ct#QY%$OSukL6D^@(e*BCim(XBw|C$SMLH3tD(Gfv5~1lA!}E3S})<&J|Ar% zeJsXi8_@p=;uJ?~r2i*-e*W*h!_NM{nbJi5*BhWE-8b7NME4CuOAjzV1yq68dF@JF zz=FDEgR_Z|!K$fFVEQ(3TmxWNpc~kjdmVcN$aDkK#8MB6q}N*mkM!!81g_klf0U%I z|2iXYBt_X)5QI-m6U@>H4^(&&oyUvKrc**WiU&n6{$QHe)zQNWeMWJtCkaaZY2F6= zrTUbk`A zX)1&7GiFk_Nl|S$OI1t`%zzX*W00o{vUrQ3Lej%t1}+C9e1}qC-Z?4;Gib_TN?tWK z_dm*BIm!z8U#;o4dDxdj%%7;OLh+DC@Zq(N%pu=tRjqQ!cXgHehF(7jT_zjO{BT#K zfJ{m7-ef)6hv@7fRS##49$Isqf+_Ol~$%}c^hEu>Xz>BAvG?4c|I$ps{#EtaqSmo0Co1iy@L~< z{vRK8@4q)vRvrI6+bkgtU|=eHTb3^&Aon{pD<%I7Pr(uLX1@4uzBJYVa!~r}=e>>Y z3UvWz0EN!Wu79#tmG?jIz13L$0w~Aqi@5^IhSc~HD4&GVYoOwDO)Hjaae3V-KjR=l zka1_mRdSMBf6~h$ZaoY;>B?tTD)>L+WO|k)Ymfi3cY5smf1jLm?|(K^8mM$?8p=P*f>>TY(Bh z$;v@&j2A*rj<#CmX*{atJ_!wy1O;EAPbs;>F>>>KC~;D)E6@uIvX!;sg`_0iRav=y zF@S!p4wdNlA5j#elw+7IjX@4-VH^g9JCEfMk?LrMxu(H1{F1|!(Q0myRE@|G z{PGR^bqCzeI2aKw|LTJ$zY&~*{toE7NQ4n>7um*NWc5#j`?727Kx?_(oVJ78S@aR{ z)gq*U2Jz~&$Ir7=%72CxT+5sr>$3kIo}L!`KaTf0|No7YCgP3R20Hgjtu)hAn9-G{ z6b-S0p#N#BGJ@?fPo;eNEqDz-BEV);<^@%P56+{2`AHL11uvLT_PZAfyO(QuKxeee zs!FF{SU2Iy_up-q~UKw6nv_&pJD- zpLBow=97L-(mO;sV245;6Wd0df;*Pzq}l#{Z8GKNJlHc|oNsMee}rpaOapa~zy$J0 zW>C)%+ED~VVW~-omt0h>ziSnf6^ogURne{hRy4?6oi;!Y+MZ+?&CzaZqLLMZd)c*| z5NRc0$L#t}vg0Trv$(IvWjc5ALgk5Xi?gEVC3qB~1hT@$uXm_0bLr#oQ@(#Jg;rmI z%8iscNs1#b^g1^|ZFpbjpxQ2!y9sKcE2j=U-4-iwQXJcIdZqlw#Lk^1sJ+S0DRur| zM|+2U{IA3A{m*8KZU4L0%e`8YpV>qYX5}*oEMV9R;=X=cUWRc|efO6tthO5fH70~$ z5aby{Z|+k>-=ZO+D2))iNR`o`CLFTLRceo;9F%Jjsvp}g<)Dl~NX7g`Fm1x4J9C9D zmGu9PB(n*+PT`b|319dEsLucE@W`kCM+b);{ohEj>HoXna<7&fs4c~G9}j*5G)0tQ z#sxuHfIT!A%!6M1s09UPMb~xnQ?z0%)V+eUQ0FV01P|aUZ^7DPvc7Aug)v#nJ=o&d zlwO2&{JmkR;{Umt{PY97UpxR%t^e2FapC>XQD^_(NNHvNw{46T=gLgo#z_GeG5p~ogTUD)kf`+b6g9)DhdvrS{FiGE{JB;q%32BL>Z7D(B z`9C`F<^O}@!;|j(Z=zJ5f4vU|CELIu0wr}MSt$Efe~(zw@|jCG%HT`zyWscV{fy0> zJ;0Re^B*M`rTkop#A|#1dw96#^Z$dxj{k3@G&=wGHgGw=^+5>$_7C;P+phl1zW=iK zT?C)c(l|lt)SADZnPXj2*~-rT_Zi`+c;-vGo6$toozbME6H#Sh_{KY2*3f@Elfs11 ztx9?{&uUXAFPauY#E)zWqb7}Iy#j>XqdwSBCSBH5#lN2gNUAdp;ipJdJrK&X9th>3 z9y+7$8cH?&r?Uht5%^V?I{JU$`~UBsoObbFH&YtXf4L1@Tc-F$QFHmPdQvazd2*Zh zP3e3Rh!)r26x(uMp~b+e05T0QB<7XSB>g9x;vXoPP0M>xpO@)_Oc7PS5#dhq@5}T; z5hF7ip^{Fr&kOZYq~H=Li^w#qEB|QC6*}7e@THpm-!13(p-VOW-#CD7Fid%t8Jn_MPPGe>+9rZzfGUMu>+pd1#zNS&IC7`Ml|E;E>{JqTGuO-vsyrR+A z$p2Q%S70$UBCO>|OtUpCs_(YK5*(p^5b3t_Ux~GJQ4zbM;q(jq-VDQdRSZuveqGh~ zc@Hj!SvG@kApA!C*wZYj_~NTo7?3_y8e*2sU7SV-*-)nN;<&2Kkj;l$0>>YHiwSUs zSTh^B%~LLJyTKJUze&&zfTA~Vp?-~ygVLnC_{4%4-uYgeSi-uIOd`eb`a~gI__;{JMbV42E!Tp>;c~NxA z#%osJF_zhtny$PJVD&3sG6UsfP&T_|2O^=Ye>6*+R@;=&e2lWyhR$c1?BI-``d+&A z5L(I&4ztXJ2p7R-9452QRIN`IYRfg5EWk-j+jVTw5`yC+A7Gj-&|jY%&};yfEvY^J zdEw&Zu&E18OuOgRQmK=n;E-yd9 zi1$JN<=o-B*I=jAQmAr*^@(KpzL!zL1f0SQAE<1g(ff%oZpPrZM?ul@^NO< zkgvIaaUpJA7|wP|L3i`Vs&^qyxlG#3PmcPaKTHS||Jq(;Q#BjAP)JjNQ;tT6u0kpG z2G(q@o+KPR!6`4FpZ&E?!AM3cpei!<-U8FmU=LS}epEO5!@ac*KS7MCu^(<=@PWzr zy?gGnic)?5pRLkT9$z*d8+d>1dd{uk+q(=* zl@>26IX{&;ix%CD%C%5g#rk1kpaH>O)-3+Ma2K{XDyvvOEDY48#Hx+^n*=>5b#yL$ z`d#~sq&#d-X_LBp&u#Dr;1o~5A0WkPj8YB`S|RKDyq9C>)(hUWSMcv4 zD!X-8Kf58iMhS{Ip=y~6Kj$8XVvjxHpzJMV#spyBK8;wm zCb5(*WCNJa0Y#7z504Zl11*L8gQR**&0mr?x%EwAjhp}K0q}q74G3b$VXr=YS$OmA zuE^ch7!qe}DmaVhmS=wc1L()%K<28ng@j>kn#n9ti$TH*9%woVrdIj$&z_jr|B}=E z`|se1P;;WMYosF|$8IYno%rHr-L?V*JQfk8yyhhxTgk(5tA-MrclH?XfAC)jfAxERR z0+S6c`(3n}F{HpqSrDL4m`N#UN@AuI+Z5dck|H)}BaV18xoUyL48WI2%6^T5*mxwsTIkbzqnl-|6w zLraa)LP-8lkBY2TjzrN`^c7lbR$uD)Kbj_FK0)a+0ze)AKRx#CKl^(JUHqqw6vh9u zRbHV0;Ov}@O8}CyGoS05-v=9!67pHygqYyX_e07FNF}&%BSz?{7XbEM!$v3yxvB03 z^Uk4s=ZP5l=dyc+6_`(~uJ?+@lYGYsK9|*9rHsTn>8O*ARxKUX@c*Une*UeV{~sNk zp7{PBM+aU0?~N461mpM~NVUnN(vx(|z z0zcu&Y!c`)1YAIdTwbJ%@EuC!ElHpo7;$`u3g%_8V0b9zNczLh)Kf6~UWcLtilzdR z%+SOkFKy-prK@~Co@8Aw5GXy3xCcSE> zgkjlU`E#ZYEFQddGd`MnYYDY`>6hZci)rf^iAEAsk?Cwib~LyqY8dXb)io10gm z4*nb z|6<$g&pR@4niyX+j}in%Ge}{|5n|v88jJ>_Pnh6;Aj-DEJx&tQ(U_!!3ebhY%u+QR z-P=7$|H>;+3r&U?%s&t%Ih0!zkqIgcS3?1KGC?th93^u-Uzlf8H2^nG2QZnA;ckNN zP$I=6%m7J~xfv3;oy%a1h%&XrD3xqqpmKBb%3Yixf_z4iOCnyA7(Fvfum6@8E9zj4 z$vwCtu}xC|6o-St=%btx4kDO}@%`iy#IK>M= zdspQUQY=H6I=n?Rw8#4ApS@B7>2*>@tE`*RgFWAg)6NtaVm>m;bC@fIy$w5a-zrOu z{68h}(&0brRNeQAB2`diVvM+Ot3FDWDi>=vUo~+u7PLTj{b@8HMXIB?5mg(r?>bzk`7gy(t zcErYzqAN;-mVW63O0PMDp>~TRp_B=IieBOLBWr*`vC+b34oP+0a-XX?aCZImpEl$F zM;ATZ+qRD(&8SN0QfOUc(>+4LVCOWYy1bnxJigS`(t_GMm)^SoE!zKq9Vw z(^YBxZLzVm%@33G2MQx}g(xPm2_vxR_$#36Tz5m-gD)@gL>~-(|Hd3Uq=UT7wNiqxrkNx+5hbM=f|KCQ66aOJ!+f_z^cxPpg(lX#01U}!(LNxYVD|Bue{J8_5i$DP zzChqcLoIfdL9b4uV79E2u*C<~APlM<<23KNh*xPa;lQ7PG+0@P0~?AQQD`J7Nq1#v zQSggt_-jAFqvfC0`PF792B30}Oc{>R4qyb_BcN%y@|=_omqME%>ZG@M_}}(Ccap>- zF3tIW_71tV1W?ES_x$*e2S@uyhaLalMDgDLuUG;I?3s1S0KWA_Yp(@P?&^uU4_oP4 zoSO$nyd*!*2I7YEsk6qoOk4l#vh6qN3+YSUFKYOeY&+}20$a_m^DX8?G1qWfGHSci z440N1x|s!IOMLoi>d$epfuB~uG<@RZi<-b`-+U^>xo$FHPRDtAC~=}NNgcD*)8<{}Z48A0F>_{C^Y0fB(N~0U)qxzH|v7IOInw0_2bN z*DeC&yR4G|n#lm+8S8|AuB@sw=l_e@{{O83|35g~^Z5V4>0$T&XCozh|G#3!-`V{e zyvkjv&EFZaXYhBv6|DV*mR0t8r?N?fXtTO_1Wd)@<|2IFjHv-i0|D%H=pa1XeclZArDU!Xv*GmhYLx!VOivUxK zCy>rQnKCsWtk z%sjUl_Z{ZZx2}}?Qs?VuzGwAW%QG}&rhL_DZGPcweigTNt3yp!VIVmAE!I(7naAHqvGiZ%~EsqT~EVX^!FL22tY2e^M}5pB%`^% zK^fp|Ub487?!bUr0GZ;*P?d3tc^?cK z*N4+-GS3=(t%r3DrTqMh8D9+rs5$>9dnbPU?~}d5F8}*Riah_X2#kfek^rWHJ+OvH zUY$x;68{ZF97Hq5$wVe)9^wSC9RQgI6$6}VDSa@9lcfFuf<|h9K5+_frb*uk*|6vI z|1xDWYK0vJQ$%%wa0aX}A5e&B5?4g zu~xk}EgSTt!sE5-g6RN#wXiQHaD>3sEJ<`X?S@i_2-sjS@|8BwK@;0`=Z1i6(A(SR zXXmYYptmq;0Qco5j%W%KaFKFEhcH5|dO^B**1AELMx1ZekrDQrFU&#<(f~Z;gu;=E zR@tr#)v)Pdxq8=b!KZgk)?3BKxlZAfjY+$ssKe^$rmg#GKVfc%P3H}#BZ^w~q}w!r z{sZLb9?rqp)dhG}A2T;nNh(3y@YDxXKr zTftB5mQ7dU`nXihnYyRli5D;e_qLNOqzAh zuC9K1`>M@iina{~{thLG67bF;C$C5(4aLo=iG<=2l|(~nj>U5reVk3N6)j&BiCYOo zGlcdyTO41QoO|J@4qh6x~M<2&z#?T5n z&Ve=Rn~{XBpjQE=tUq<_2O<)qU6qatz&PF&$72Ynx>@wE42`r2YJm=NB2>P*A7 z6KC30B6p@JYYaKOg$#jvh`DW%tl2fMZazhnVa8D!p|(w9q|&6cYsE}ZWzCCdvlFXed+Mc3gbdKhy2{Rk$B&@%exmsdaZ!wo*7 zc^~xUEb6x!x%cq74A}u7h{$yAIt_boizYM1Um!F+7Zta%nel30>QynWyWg-~QFZql z*0+{TA@5>xja2e)`N>7(gMi2ocjLM1d9eD;@e%OGgmMK9s|`s~onzd%kB~Iqi%oiD z0_3GN{ceYP08uhy9MR?j(G4!`@#G=cLvM}EChT)ML;Zp?@{cf$69n#r3`A1EIK}D6 zcSYWsj^61CVlO)neX}oly!h-)j1qDSlfe+GTm>dEeBMZANFmp%Qy(=mNh+#*4DzlF zwwwTKa(tx2Gnhf?+r#qvR!J6yglc~sf!_rFMkts~M-;}&S`c#Cw&q4xeJ$G+JhyM& zym<2rz=+Remh!P$2xBnI#;8WmfOPKh`U}0quBI~+#G#OVZpaH9@n%mV1KUO2H?gPY z&L`GC1SUj=_z&e+(AP~~Tz~y*=;eV+h5|j-&43gx45u*Nx5^q@icQr-v_gw{fL4T` z@>r4^S`A!!jG)$NPAR#=apnSL&~Aez==1p$_00w-JOe3g>U`T>5t1Nk-7I_i%uP=v z>IQytw$=hGq@c84mqsHz*9^fK-_vi+>!^|nwYY1xF}Q2_8ai;4y=)y58Nh;~h}m`{TAj7e-d{2=#V-+#^%+_474BiOUnKM_$}vos_Ho<+_c%!aOc>GJ z6GRln(%7m-BmZ(=omDSkd@CF2e)K|yX`|8rl+am!AiGz{4^b-gf3q!@HUiY${~zyp z`9Jng_fER_pBpKPI+~>h*Hd^emVeQQzXAVp>#c7Cqe0%zdZD{6!$CG|>%DIN;{#a` zO#iLS2<8z$wJjl=T-Tt`R6%vE4#q5_N2WYK^Eo#~G^j-ey`WqIq+BA4By=Haw3eh2<6OhZj zO6~wI1!7K9khP0usJ`l`FS;qbhcE9YcU)zXND~W4OQFKQw+nGy z&D5L=l);kMX}$Kmw2qVNr(9>8!)QD~DSsi3Eq2D=hPQrstn{-imHc16wqM={q=x_R z9iQ&`{vW6NUHsRLlqL*V2VL0pqn=@oCN={yRY5UmsH(eLjC0w4DH_Q@5#a=w2I#Lq zfan*@#ee?U+uhx@`!hi{)dhNA_w95ox>G-IIS<`z*a<_$Mo(0$KL95`!%4DT(LRk` zUuesY{fMYs`S~AbPmHffoIfyLfE?8M|Lzy!KkuKOcKM$-QiPDubNs)I(V*H1tS%t3 z^TOOvj;G&(AIxJCA-KeOZwx>de5K%;Y{ye*Q=F1L>I(Wp*(`9^EXAtv6zbqA&%RUe zeRBlULYwia5vaVmLzLne386}S6YX4?%_VY8t${>u&Bot5Qz?Jy-rE#K5}yzmxrA-~My3*Tw(cNKx;9 z3$c-;{bvQ{pF-HAR>q$~>-FCW;>jrQ(6O$#xIED9po3nU8^Xd8SKbu*6aVn{h0eh1 z?hG4UhCP<6FLUBPuX`__J3PMIui}pPd)|umUTZ!~Wk6HiF5>{EGe$_Uvbn=_tN_PW zq7dMl7UhFtPKq?WVISJNE=YRoE)ZoSFcp2WHhq2u7l|g$;ForbSRwzZH;yZK0#+mc zo$jCb@n24kPdoWev|7ECXS;37w?rgO=3qYyPLDpx05FY0 z514aNn${vLSL!LYB})C%dL+pT8B+D@*DsM9^`iK-wVbHG2IRxcLp>7`WoC{3Hh5w% z7#Mp`bp|A}J1zULnYv%T$ucSGZU*2+Y*zJ95i<}YhDRxq5q<6n{is&{9`kVq#I)@D zu2Kcd%95h5>9C#Ps~QzWh>H|+!^lFWr_bJxu4L;~ZoXDNbkg%-YGO;-f{YFeAOYn- zC}JeJLsFQKi82b$A6%cjoO;ze-`NMoM|)dm!LZ-Y_}MV>ZQ<@U%%lO*5IP;+3Uj8$ z%L&MktQpN`>tXnq)TSj>8nfe@t7)3j2D)2FZwX5MC1mZhmGv`0WZ{`oX?4yK5( za{OrrZ1IE{UTBYlCoF)fm_gmZ4qY4QCmWoo7I^T^6Sn(J9C*t8MBoMf0668|vrY%( zo7>+q79Qq}dh2KX7dCaV$(YFSJJ}HB-^FT$k@qWR#c5tLqGbuC8RK?v306QK?HMl+ zNbsaE=j_2mvAx(aIO|DmhfW)$<2@AF~y zZ;9WB{%rYv*noWh4?os0@boq*<2WE4M-QRFnfN(%O18l}%T~CxUCgv;Ny+X&*5xdc zEv4IEAaSTrVcnUKR}%dxiS?8A;#;;VmS(rx@`oZs>WV(K9=}k(e%oN*1@&9K>_3ZR zl@2t5tWl_#p^tx_HRA0oDaziJ6P7ilGM0Y@P8$9w=5+E)cJoN z9{BwK^z`JYSX~c7Y3Y)%>)7$T}v!*Kls9dySYn51gDZEC=@}r zbr*F9TIDzzz@f1VX$b#y$p=nf{b1j198A3})47_itCZ9KKrXEXxj?=D=f3a%zrWx4 z|8Jy7k~Jl9oGtaOTCkNCgh~~+6 zYS4D#0R2-zZdj>gS1H>`1j?F~Ne*)2${HDgK~^f45lRKQYEe$kSDE8jnfxYORo-dX z6dyA^!rTkRZDx`wHdr1zS>hmW{fgrcFr;Ln9{v}nDDuMj0+ez(FHVjcf0?gHe@Y1_ z5lQ;l$Odpaz0$ubmk{^ckA%4p2=!`+83g?)G+~ zH|Bd-+fn0Sh1oQ>0pHwtCtJh<84Cu^Z!Xt0@Q`U95zw0i7b*OoQ=QwqxWQ)(U6L4G zT!sAp9J=eBV$k18NsK<=X+Pwam&2`b$#c;$Y1qq2j{I!P^Zl%=zSZp)L8hz;k>-5u z61`PSTJKI=1-lv;<9gP%Z+GIc+(+dwRU!XVOep4ancZ!j_kV{cCkMs*ztc|s-$YR? zPcJo)YrU$s|7HV8y4zM8aNBOc+G}^{*nRC|u%@?Knyi(p1vYZ6jK9vpR$G1Tajw+f z>&$FBORwGZ3$*#xtWNF9e4S=q_0`!MpIh{Vmy;VwM*1WZo#qx$lNvtZAjFY2Ox@EUXPn!37 zGoL=64tfGJ7{~)6(&Po$H+q~2?id@XXIuR!c_ckuHp}oA?V9v z?Qb#hRjOA{63n=&6nH}*-&BbG_akJWuzwVkz^ix}#sjCL^915a$Y>XmjKo-qCcG+% zsDi98mD^v?v_YDy5usIf%xz^0-}siKO6US*?}r(O97lnlR4z&RW~Jm?KgLWEPybzI z6_RRp&b5@}!p=Y01j2ia+oH2OlFTNkE)T{~arXN4b8vor(dN~r zy=U0u_Wb%{6;JhR=SJq?WSGd@n__5#h~dG<|HcNGghp8c$ZVi~Oz~YQsN#&dc}3;3 zS1%Ez)3vHs{kXbVT=gYe`X((Cc#9H$hpHc~y(#e6ZUPRbDdCE1crdLmivV_RFlP+W z;*j+oHXlKM3K_d6G!9lXAM1M$zowQ;X~T`l1md(%x3H)3C6?E+psyPC!64X=|1udg zde7A?f?JMC_))a=0Lef4kJ$CGM6=TAnX}J(QfWhQ_gG)?atsx$5g;DaEcN z@B2GBZPzKBvN7R-Yh$hV-jPI9^249pdCe>KimUOdhD@Irx5- zBx*MRgB}onhk7z-1mdqq8?-N{na)e3wpuH(JNQ;U8>=xDI|DBF+gO=iXD_9t*u6Uk zyLty^i{$%SROm>+o~9M>3lZK@QXE#O)T4aNB8CHR@rQtTk*h?-0i5yiHDZDr zmwbJJSw!v-orfq?BbEO#EB#BT{Y&Uii)v3R)t%O)Ihh#OA7{6SriddUe?FD_X*U{| zCDC>uXw9pBPpDlgp)TNR`tOXSb>nHyNS4!sZ1`Ois4u0I-~Z8DxS|WdI{&Z3egFRN zWN*Lo|Jq1V@t>Zbov+I4OKh8#7l5kC>V3SFXPbq)t051$rBpi%1>RuYEUgxIj83KJ&z3-z2@iwo4I zE+^%dZ077F&)LKJI9&`ul*|}M?{SR4M>Gd9K`IuvyrtX$kTIc+tLFjX=r2#kko^am zdlMqTQUSN$_*Oa$I(II{nyFyai{-pq-fHi(jBho3P|sq)&ihz^$-_9X0tcD3Np3Z-3FPY zl8)f1etICuQ+D1?^i*q9Eqkgu4}UqNG5JhVr`9c3g`B$hnpLh^E2;HMPNtfTpi8Fu zSzjTVqtHeTP?Ub1`BTmA`hui%&B;44{n3|N`Ts16$ShsT4qRvdJvcb^@;~hDogQ@Z z|0aqf|Le70u^ynIE~XA-jUP}e08k;()KknmISXkCW+{rwg8A~0I)lbx0oB3mu_h{n zsrqO%35`(aaP~Dxi`kBCC(UV^@x@7X8A0xZyDydVJj7 z|8JzYLCsg^0-!d}BB5X1rWl6DU{7j0 zQOj!i1-cGYuT0&le9e9Yi)3DS6s`nIN}eWX65k`7-xzpz_1DDHx zZorXs+W$_D{QR$b`$t{=?~Rl|l$4bTfquw|R$`#vc>RK)Hw%_1SQ>k0qtc*@UmJPQ z5ByRk5qe`?rBGNNMW$XXblZM;f?@3vHCUdnSvp)e(9@$35nIL%+Pv4P8@#Nc99nbU zKU+&^+fYi6Sqf|_|1Dz%tdsvvPyGAe{r#gZ|LaCdfOtk(5~$S+fr}UfgAg_?4i?OV zf#dNgiU9w_`#+ZsPsVLGk_1Q5XMhBSmiI*E0?|PDk(6lB=7R8C4E( zs}cnDerhTFWv$jP@J*^_!IJzmN)IIMRbkmi?9=Tl1wAwQD-`Z3C%KiBR|VIy)+ExxqLc z1%j7XNq1R0y-tz6PRrzhv(uv}91T%yhhY^dT?#*&C_EB_XIGq3A^#KlF(EKsUID0) z|Bv^Mk9_(6^stlvH&P^3e6N>!RS$p6)@dv2XU!hsu}`+&n?3T$s<(UIW12Y%h57Aa zGz!ywEA7E7Ri*l1Dy>j|$mXh*u3%af#i}eGr7v66bhNg&KGkA(Cv~qy>drQ5BeA=5 zYqSxuolb-_t-8P}3M)y)j)Ytj%ova~kH5MDW=#FWP=X>(Xj5Bgtx?kqcS_>xDT)9i z0CO3-I{hmLLx>a6ZHf~xB{=1VRTTDpFmkm98i-mg0cXnqcEQU}QxtI&gI{!`Uu6t! zPE_>le%(1(Sk(75i2e&SO~`zLQr=Fcj;(g9k?;$sU319MaF$%7mbfw9kS!8Rt08hP zAexZ0HEOYJwob(Uo!quV={M0}O~{;6lD0-Dq9k1wsZKNN%D+|Ve-Wa5cLGy563U?X z3lDJw7YPYp>;L2He+T=g$NQcBw~3-yWxl$rQURwF6N>qK5r-dZvu)zuM|5YaV^;SM zq>%{>+Gt~9{lIH=R_(>C)XwZ#wnENV>t~jPS*dUd;9uS)O!IjzpW}zWnNe}gAh3{A zL1l0B@fJ#m);o3pjDMT4aF{$VFLXJ)MhdUhd>1n|LsX6K>r;CldlI`s1Y92}gU zcJY5VQsiC^uJP(Tz~xRF1UqT#3SJ3n{i34kSU<^rMV#c0{x>y=4WEHDGA6e)vKuuAKHc%!zu3h;6C+1qC?q_$nZ#%uR=x)XtN3i-Kti7zK0mTjnJ zGF!8gyI~Pdkr*vb-eW!%a$L;hweXaZI~*grBX+#J645`HD9{tgqp{GCuxOhkfPKVM zB?tzFR^hv^c$xvfK#mL0pHei$pTsFB~r2M?~`UU%J2J8TE`nLy*{-*n1 zKzP44Q&%OeXX9%jp%=NQ7x&G~W4oAdy43;}bAlIIg1(%$TIY(-Ljfv31C{&# zYu0jdiuZXbHXg%xgil|y&DhYwT}DPfTN`(Qr+0$;qbRlVzZ*H=)gl)F_4a@7{qMoy z{$UsYc_Sqd0byMi0O4L1(+$dCtzT2PBZ)W+p7B3?N*+jY$WdHCb?}2UG&1~$hrhm{ zFpHV~^LhF5TvJ-FUh|dvnkC}!w)@=VJuaN)c_~f+n|K3PZ@qZ8<>9=J-tv@h{eAWKY z-(qE9WtKv4Ge)4V4{hJPUbD%6f^R9L^F?(Ch0Z|iMsdFD6$Ph3t`6W~?%%D3WIH@> zsozuu!BHH+v9h6$4BDdxz-&gs$tmGQy> z=&SGjLeLzmx9tVo1-tTvl~VezC4gn_eNCyO|HsAn561^x{D+McCrgVU`*S0v$>+!V z@voG6Ba(86Q!qx!1RzSYXUCcmV5V-&k~xTA3dS-$I)FotC=hf9rz68%JO5H$Oo{0t{ae@RYb_I)1=GHz4HZ1Ogi z{Rt*XPSu|%v881F3f9?7|B(;NBWNP9;RHqwdNE?+yX(;WWED#XFR($#XMj2 zY%I_EJDE-3f`bv_3``*vD+L*lQahBH^TkdPD?UP>j8-Lnm7C@s(pc}XjK|4`;+ak1 zTuLRoK+lWWpfJ_g%561)bFon%poq;9F60uu8wXxPbAc-xKLh_W{hulL=1%?h8ks48 zx8x4#86Mc{65^+io}re}{{%D6jQ79i75WOZR;od*{D11le?L6f@8Z92q|}kN(hcCy zI<0|Ai+I3vj^j@|VC$Ay1kp69^qv>}6s)kurk_!PTbAsK?JDhyPdK^eRGehdYtf7; zNn(!5zZ;CXfy+%sA#>XMj70a_X=w0)>?Hs!WUg?=zomv zaD>_te6Q5e|HA|S{ny_9Nk{)TQtIe`z5&`3eATv`=I5|Oug~q)I$DbQsqhlLz!6lv z7W}~JYuzkiiYUX3qco~<)~jl`H2JrH8KUp3m%Sn~gpJ#mD~P|4ErD7}@Fq>>;1>n$ zS0I;8D1^5ti)MvWkT1T{Cq{&WU%p|#_5&;Ln#>k^=-QQFsiFUP0!Qd-mL%#$|6+`w zj{fiO`|)26_V$iD`oD=%Yez3`fcA{Q15(Zr0=?DC|I=BLsGHNaYCsULwbOsE*LFO> zZ@e@g@BkWK5MHv5?0#vbj{c`3iWpl?0jRbA?C<&V|KUkT|2IfKJXBoCCN`q}l?6!~h~&y; z1|l|=m(FG8A$jNA?<_#;DRuOp&;^Y?R;i)?2M33q{J(#Cx_8vk|4o!y`mZ-YDd9K& zwm!4FC@1xU{4a||Z1KtT+OFmW1aR6obkk`m(JS+Ubo=Pbst#c+k`m3iMAZw$y@>7I znd7B8F7PT@|FXb(2o3Wc-H#W2w`2r*ta%qUaskg1gOSQQa%CY_^P+|!Drm3j&txqL zINO_*?`N~pcQM`$2n7!_wf^0b{tEW|Cp3DG`IA<`g{@)qv$^7QRu;21$c-&|BLn9P z8tx?6qDBy$FJ>_RBoqSQIRme%0%U@lsJ^VXuH zzg?-P|4J5I>;2Ec(Xns;+dDk%{J%C*YUzKz0UA+%BRXHJc5PLTI%Q+KsI0NO=u!vq zvlYq$IaFP^I>p)|a%8%Z8_~}oSQ(c?56F%lrEsr~=BMklkL6eP1iN4XXr=)&SN*HD z*%g*j>4r^KvZx`NiF4$IyC^6rsIE#TOMR@<4(%;o!QyRYYI*%I*R4Y8p_zf!+F?Ns zF}tZ;Ni1v9Kv!JnehVq2C8QvmuC1Vr>Z=foYWTk!9_BoOi}-@n`v2|u`rpB67yoNB zrH=oXY=HKfpboxNPS#6$s#gi`TI+%iE^Ai>0|RTP6ovpStsVw|8b#4vs!mV*l1nT4 zzn~geYyUew?DBs;P-#d1H$wWqNV2~a$zM6S??`=DRB1>57YhJTFaP`W|M2Lr%m1;F z(vto!6#(F_DgZ!vM{8jP8w&tX7GQO8Zm_x#03}h24R7dT0DSpH)BnL3B@;YK2}P^# zqlW(P9sBuT_YY3H`~S_9zkn;qIijfy9;J2wxF4ew+|F|7ZSWcj?m{kP3tXhB!g2_w9h)PkY}EZsEt?w*x*A|0WcVdf)!Py}y8WkYX}p z;Nrzg)*DPI`3*(9H^4E1PgQkFe(MeHSVUs<^mCw$`uxATIDdJ0{c=5hRG&ywD+5F(k5GZ${;Hy^QG7e&gfa~d#o#@mAD@+g>!0hmvOl6^0_2aq zvpB|rfWQRQy_!jwM)Ka-gZ^k#BtB?kOGp&tQG!IYAC7Kw&C05Xt}bQHWz1>!5_ z05d^cP{fltU~+0=9ktL#P)F{LOF)s~5Jwm$fTAg3m=ikR0TJXdAtOMj20X~HhY2Gp zLD-byJIKSS-vF49Smlcsgp?CG;sUmE3L-rPJ0*}LrJphN<|3b?L9e8~SfC+E5^^s% zLj)O;snT{pJVP22OhF3yO#CRuQv%35^?(fgHSbrT@>jWI(5GpFBP<3qrDTk6F-P&U z5@5UF`7DhS$!65uqQH(&5Mwq?;M@fEb9P19j9@-~g41mPQ^LoHnjOSZ8jC%k;=^0` zmQJk+z6hsNNKwi)5I}}t2qTTQcJSCW4tOnLt&Qqoz_foS>AesQY57uE~(!i~ZD_CI~X5A~Qz( z8A#9wCjU35GbFyqTi3r(u|h0zZ;_bcg7UZ0gW16^Rtxp_HpAn70T_V2l8~gE)b=3F^&cJW~zY zLr+p8#vxZnP~!S3TOKn8jy`dj4u#^;n1d(LHaOVZKLxKL#qh;*a8BryP&Mgiw>#i0 zNx)lCm4Ua2A$o`6LGNGx{9h$=^sj&ZZ!rN7a0+8If%K!;Dq-M*UT=4mrPr%uK{tp_ zm|9@NfxsA1bUOzlLHZe(lbKuAlQjlAfe;`JZqT)N$69<|JIW@*iF(f3V zQ$=}GlJ0s(O-C|!mVF>dVa60C^_IJP|~#=k_+}^Q?~u$W9|M@C_zqD9X_hKyh$-V>I=fA9l+1hCJ_Ol#H7$UEO;IE` z2@oJM3gPc?wSUFd>}9+5evG5BI1(Tt6U0=f_VEa=6IFXs0_=&pTr98Y)g?7MSqysJ zO2RS6L?{UqjwqatdnzKU0EJV?#SC5yMR&Ax_3WU=lW8)~i8V!kpJA%VQZJfOLAaB- z=o86Rk@0I0izvP=p4c5Z$jMAjKaIwMg2A2;u@RMWfTkyT7Ev=-LSkY74u?3wk`|zp zV?oyCdczqX6N>+V;vPi|B?+SHL)INdLke-K0MD3VckNg3-8o zJDP1_oeFvW?jW7_nt`B5vX@wJQL_YtUhii!oe@dd6h|{MW69h|5zb)5(UkpU6DX*F znLj~-f)g|VYHI?DA|&Rrh#O9An7s_9%u=L9(46zn)tOW0NX$$`Qbm54H2DpQpb~nY z_UyTzi}i6&3FLBZ#YRcz<%b8S0hz*pmh2GDI1w^HBsgL(JDI9Gn+UjVjToTMog5EL z5+DV!o?cNFrpJOuSfH{4E~$o`a+uCFlaMi@=Qg*aAR!|H$S^1ALYA@5Bm+;3xUZ&a zZs{Db1{h>QqNRw5{iJD3tYx?i>1{EHH{j;Sm*C}p-n_iL0aq{IzP`A*dHDi7{~4TJ zUA?+EKYRY_C3toAen-~Rdix9T{>|I}02kNb>g}6%7cXAE0B4dhQhT)hJCG?70T>`6YE z&Orh>qK5iQ-AsJQIIqfTz~o{;j)hnx7bFBN0P9|CH8F#EdogJf1XHG9Gp)kp!!v}g zFp3CDmF*T~k@+QM5-mp*P84Eg@InX+Xb#Q;;7F+1q~;Q;i;_wiKxWdvUCO6Wn*$Ey zsvs=Z_ZfHsw{u{r4Ns9FV|V@)vLk zCxY2sM`JWWz1}X+PaV#ph|E&{tOvj@xKfW9o`Jt@eLqW*OE^J)lONuQv%u`%ceh*s zs_rg$`~2*D0brt;0igjej*#b65R7;%3=+obNz5f9OG{xO_{|ES+ zTT7a=75M)lv+T%vl4zq(5kfHoCx=~g~7%GZ^ybfqg_clrMV P00960fC|;b09p(Hd4E&t diff --git a/stable/notifiarr/4.8.13/icon-small.webp b/stable/notifiarr/4.8.13/icon-small.webp deleted file mode 100644 index ad6e61e696e2b2722df7ab0709526407366f0a9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmV;j15Nx=Nk&Gh0{{S5MM6+kP&il$0000G0000V0018V06|PpNc{l-00EF~+qNM| zD>6!L+qP}nwr$(CZQFXaZQHgHaUSlyk(u=c5itQoa=Ycc_*TH|lC#eD|05%=Z)y=M zAoZ@e?t`wI-z`7;TRx1B=~se%@_t-KA6D3bl5tvHkSAsQ$o$Y*6c=r>(^2uYeE+wT zr!>!gHo@F&D3I>z|F#|?F8rwp5Rs~2+43cFT#O4Oy79ZPsq^0f#B03x_~9*cCr_NY z_QHeJO=6Py>&{&oe;E20$MX(3xiV)T>8?rlSKLXd@Vp@_R(n{mhnoG{yQ2DK2gC_&SeUxWq{K3OL0iLc}a8+aSv!>^y;h(mTUmc zk7qDN9Mo`mw=zmnDdawr+fejQ0?jeaFv+MP-I>gqkVmpWb57Gv%InB_I;LW6{M%fy zUup`$AYAUR7vYN8&Q5F_atn=@pY4SLmP3%bv zp{K%?S~3;=Ca1cobx)`?2O##t_wfyh-@MIaNWTf|KxQCpkJ}t`*`H6c>7pK@{3;;I zCYguVIzK))_bI+p(N86XtY>6Js3(d(c8^rHA@P+J&B!?a*PlT)e#V;lQ(mkq@mB6N zy5P8n@({qJL(csgBH|2tyrc+$j+5xvpIOm;1k;X9WCs9NP&gol0RR9{2mqY{Dj)zL z00ICsC9nc?$`Qcct8N{jg8{Y!%m(NO><3r}px5koln20{?Z4~?wK;(Knv2PB24@BD z@=s`qi4H4?on8@X-~a&rorR`>%O1q;rkM9eM_s%I~;U!(^ z3<6IpzjOQUO2xBPRfP*z!k6SW>ROjdw`@UY3Nv4|4ah&pi~d z;>UvNBu|Al7QRKSUYcBg<(*obyyALh-D&~}e}wAl*%KZ{EX03@>v$$Mo{=U5%Qu{! zES45D^AMRfjMt>>G)#tB{Z_9qDruLLmC?>pwBbTAA_A8TuD%Bd{1S8JL5( U?lXN&t(NQOX!_(4h|&N60NJF?FaQ7m diff --git a/stable/notifiarr/4.8.13/icon.webp b/stable/notifiarr/4.8.13/icon.webp deleted file mode 100644 index 8bd018e82b751e0c41dd544b1333b59c50b7357d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7086 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 "$CONF" || echo "Failed to create a minimal config..." - - echo "Finished." - containers: - main: - env: - TMPDIR: /tmpdir - DN_API_KEY: "{{ .Values.notifiarr.apikey }}" - DN_BIND_ADDR: '{{ printf "0.0.0.0:%v" .Values.service.main.ports.main.port }}' - DN_UPSTREAMS_0: '{{ join " " .Values.notifiarr.upstreams }}' -persistence: - config: - enabled: true - targetSelector: - main: - main: - mountPath: /config - init-conf: - mountPath: /config - machine-id: - enabled: true - type: hostPath - hostPath: /etc/machine-id - mountPath: /etc/machine-id - readOnly: true - tmpdir: - enabled: true - type: emptyDir - mountPath: /tmpdir - medium: Memory -portal: - open: - enabled: true diff --git a/stable/notifiarr/4.8.13/questions.yaml b/stable/notifiarr/4.8.13/questions.yaml deleted file mode 100755 index bd97b8e4433..00000000000 --- a/stable/notifiarr/4.8.13/questions.yaml +++ /dev/null @@ -1,2995 +0,0 @@ -groups: - - name: Image - description: | - Configured the images to be used for the Chart. - It's wise to use "digest pinned" tags and to avoid using "latest". - - Checkout the following documentation for more information: - - https://truecharts.org/common/#images - - - - name: General - description: | - For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general. - - Checkout the following documentation for more information: - - https://truecharts.org/common/global/ - - https://truecharts.org/common/#tz - - https://truecharts.org/common/podoptions/ - - Image Pull Secrets - - - - name: Workload - description: | - These settings configure how the actual Pods and containers are running. - Generally, on SCALE, we only expose a limited subset of these settings for the primary workload and container. - - Checkout the following documentation for more information: - - https://truecharts.org/common/workload/ - - https://truecharts.org/common/container/ - - - - name: App Configuration - description: | - Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application. - Most options should have a Tooltip (Circled Question Mark) to further describe said option. - - To find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/ - - - name: Services - description: | - Service and Networking options for any applications are contained here. - Some applications may have complicated networking setups with multiple options or some may have no options here at all. - - Options here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes. - - Checkout the following documentation for more information: - - https://truecharts.org/common/service/ - - - name: Networking - description: | - Contains advanced networking options that are not actively supported by the TrueCharts team. - Currently only contains scaleExternalInterfaces. - - Checkout the following documentation for more information: - - https://truecharts.org/common/scaleexternalinterface/ - - - name: Persistence - description: | - Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types. - This storage is called Persistence since it is not deleted upon restart or upgrade of an application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/ - - https://truecharts.org/scale/guides/nfs-share/ - - https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath - - - - name: Ingress - description: | - Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names). - If you choose to enable this you must have a "Ingress Provider" aka "Reverse Proxy" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/) - It also requiresa DNS service to actually resolve the DNS name of the FQDN specified. - - Checkout the following documentation for more information: - - https://truecharts.org/common/ingress/ - - - - name: SecurityContext - description: | - The security settings for each application and/or permissions that each application may have for the files/directories created. - Each application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities. - - Unless necessary users are advised to keep this section mostly to defaults. - - Checkout the following documentation for more information: - - https://truecharts.org/common/securitycontext/ - - - - name: Resources - description: | - Resources limits that have been defined by each application are in this section. - Most will have a specific default that some users may want to change based on their specific hardware or needs. - - This also contains the options to mount GPUs or, more precisely, "request" GPU's to be mounted. - - Checkout the following documentation for more information: - - https://truecharts.org/common/resources/ - - - name: Devices - description: | - These are special "mountpoints" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts. - For clearity we've decided to seperate this from persistence on SCALE. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/device/ - - https://truecharts.org/scale/guides/pci-passthrough/ - - - name: Middlewares - description: Traefik Middlewares - - - name: StorageClass - description: | - StorageClasses define where to storage Storage. - - Checkout the following documentation for more information: - - - name: Metrics - description: | - Contains options to configure Prometheus metrics for the application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/metrics/ - - - - name: Addons - description: | - Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application’s defaults. - Things included here are VPN addons, Codeserver for editing files inside the application’s container, Netshoot for network troubelshooting, etc. - - Generally not required for use but may be necessary or usefull at times for specific applications. - - Checkout the following documentation for more information: - - https://truecharts.org/common/addons/ - - https://truecharts.org/scale/guides/vpn-setup/ - - - - name: Experimental - description: | - Experimental Configuration Options - Often these are not fully flushed-out, could randomly break or might not work at-all. - - - name: Postgresql - description: | - For Postgresql we use "CloudNative-PG" as a backend, which has to be installed first. - - Checkout the following documentation for more information: - - https://truecharts.org/common/cnpg/ - - https://truecharts.org/scale/guides/sql-export/ - - https://truecharts.org/scale/guides/recover-cnpg/ - - - name: Dependencies - description: | - contains dependency setting for which we, currently, do not have seperate catagories (yet) - - - - name: Documentation - description: | - We added this section to make everyone aware that OpenSource isn't always easy. - It doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects. - - Before installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/ - We would also advice going over our https://truecharts.org/scale/guides/scale-intro/ - and many of the other documentation pages... - -portals: - open: - protocols: - - "$kubernetes-resource_configmap_tcportal-open_protocol" - host: - - "$kubernetes-resource_configmap_tcportal-open_host" - ports: - - "$kubernetes-resource_configmap_tcportal-open_port" - -questions: - - variable: global - group: General - label: "Global Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: stopAll - label: Stop All - description: "Stops All Running pods and hibernates cnpg" - schema: - type: boolean - default: false - - - variable: workload - group: "Workload" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: type - label: Type (Advanced) - schema: - type: string - default: Deployment - enum: - - value: Deployment - description: Deployment - - value: DaemonSet - description: DaemonSet - - - variable: replicas - label: Replicas (Advanced) - description: Set the number of Replicas - schema: - type: int - show_if: [["type", "!=", "DaemonSet"]] - default: 1 - - - variable: podSpec - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: containers - label: Containers - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Container - schema: - additional_attrs: true - type: dict - attrs: - - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: command - label: Command - schema: - type: list - default: [] - items: - - variable: param - label: Param - schema: - type: string - - - variable: notifiarr - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: apikey - label: Notifiarr All API Key - description: | - Notifiarr All Integrations API key from https://notifiarr.com
- NOTE: Use 'admin' as username and your API key as the password
- for your first-time login credentials.
- After login you must change your password from the UI. - schema: - type: string - default: "" - required: true - - variable: upstreams - label: Upstreams - description: Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled. - schema: - type: list - default: - - 172.16.0.0/16 - items: - - variable: upstreamEntry - label: Upstream - description: Upstream IP or CIDR - schema: - type: string - default: "" - required: true - - variable: TZ - label: Timezone - group: "General" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - - variable: podOptions - group: "General" - label: "Global Pod Options (Advanced)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: expertPodOpts - label: "Expert - Pod Options" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - label: "Host Networking" - schema: - type: boolean - default: false - - variable: dnsConfig - label: "DNS Configuration" - schema: - type: dict - additional_attrs: true - attrs: - - variable: options - label: "Options" - schema: - type: list - default: [{"name": "ndots", "value": "1"}] - items: - - variable: optionsEntry - label: "Option Entry" - schema: - type: dict - additional_attrs: true - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: value - label: "Value" - schema: - type: string - - variable: nameservers - label: "Nameservers" - schema: - type: list - default: [] - items: - - variable: nsEntry - label: "Nameserver Entry" - schema: - type: string - required: true - - variable: searches - label: "Searches" - schema: - type: list - default: [] - items: - - variable: searchEntry - label: "Search Entry" - schema: - type: string - required: true - - - variable: imagePullSecretList - group: "General" - label: "Image Pull Secrets" - schema: - type: list - default: [] - items: - - variable: pullsecretentry - label: "Pull Secret" - schema: - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - - variable: data - label: Data - schema: - type: dict - additional_attrs: true - attrs: - - variable: registry - label: "Registry" - schema: - type: string - required: true - default: "https://index.docker.io/v1/" - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - private: true - default: "" - - variable: email - label: "Email" - schema: - type: string - required: true - default: "" - - - variable: service - group: 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) - - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "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: 5454 - required: true - - variable: scaleExternalInterface - description: 'Add External Interfaces (Experimental, might change or be removed without further notice)' - label: Add external Interfaces (Experimental) - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - additional_attrs: true - 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: - additional_attrs: true - 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 - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - show_if: [["type", "=", "static"]] - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - show_if: [["type", "=", "static"]] - 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: serviceList - label: Add Manual Custom Services - group: 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: Persistence - schema: - additional_attrs: true - type: dict - attrs: - - - variable: config - 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: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - value: iscsi - description: iSCSI Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
- Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: disabled - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: persistenceList - label: Additional App Storage - group: Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
- Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: "disabled" - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name (Optional) - description: Defaults to chart name - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description (Optional) - description: Defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: icon - label: Icon (Optional) - description: Defaults to chart icon - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - variable: widget - label: Widget Settings - schema: - type: dict - additional_attrs: true - show_if: [["enabled", "=", true]] - attrs: - - variable: enabled - label: Enable Widget - description: When disabled all widget annotations are skipped. - schema: - type: boolean - default: true - - variable: custom - label: Options - schema: - type: dict - additional_attrs: true - attrs: - - variable: key - label: API-key (key) - schema: - type: string - default: "" - - variable: customkv - label: Custom Options - schema: - type: list - default: [] - items: - - variable: option - label: Option - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - default: "" - required: true - - variable: value - label: Value - schema: - type: string - default: "" - required: true - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: overrideService - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - show_if: [["certificateIssuer", "=", ""]] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: Use Custom Secret (Advanced) - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: "Allow Cross Origin Requests" - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: namespace - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description - description: defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - - variable: securityContext - group: SecurityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: container - label: Container - schema: - additional_attrs: true - type: dict - attrs: - # Settings from questions.yaml get appended here on a per-app basis - - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 568 - # Settings from questions.yaml get appended here on a per-app basis - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - show_if: [["runAsUser", "=", 0]] - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "0022" - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - - variable: pod - label: Pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - # Settings from questions.yaml get appended here on a per-app basis - - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: resources - group: Resources - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: 'gpu.intel.com/i915' - label: Add Intel i915 GPUs - schema: - type: int - default: 0 - - variable: 'nvidia.com/gpu' - label: Add NVIDIA GPUs (Experimental) - schema: - type: int - default: 0 - - variable: 'amd.com/gpu' - label: Add AMD GPUs - schema: - type: int - default: 0 - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: device - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - -# - variable: horizontalPodAutoscaler -# group: Experimental -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Experimental - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: ingress - label: "Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - variable: scaleCert - label: 'Use TrueNAS SCALE Certificate (Deprecated)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: int - $ref: - - "definitions/certificate" - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: netshoot - label: Netshoot - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: envList - label: Netshoot Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: gluetun - description: Gluetun - - value: tailscale - description: Tailscale - - value: openvpn - description: OpenVPN (Deprecated) - - value: wireguard - description: Wireguard (Deprecated) - - variable: openvpn - label: OpenVPN Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - show_if: [["username", "!=", ""]] - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: string - show_if: [["type", "!=", "disabled"]] - default: "" - - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - max_length: 10240 - - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true - diff --git a/stable/notifiarr/4.8.13/templates/common.yaml b/stable/notifiarr/4.8.13/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/stable/notifiarr/4.8.13/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/stable/notifiarr/4.8.13/values.yaml b/stable/notifiarr/4.8.13/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/notifiarr/4.8.14/.helmignore b/stable/notifiarr/4.8.14/.helmignore deleted file mode 100644 index 77ca5567b26..00000000000 --- a/stable/notifiarr/4.8.14/.helmignore +++ /dev/null @@ -1,30 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png diff --git a/stable/notifiarr/4.8.14/CHANGELOG.md b/stable/notifiarr/4.8.14/CHANGELOG.md deleted file mode 100644 index 941abb8a218..00000000000 --- a/stable/notifiarr/4.8.14/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -*for the complete changelog, please refer to the website* - -**Important:** \ No newline at end of file diff --git a/stable/notifiarr/4.8.14/Chart.yaml b/stable/notifiarr/4.8.14/Chart.yaml deleted file mode 100644 index 141db070dcf..00000000000 --- a/stable/notifiarr/4.8.14/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -annotations: - max_scale_version: 24.04.0 - min_scale_version: 23.10.0 - truecharts.org/category: MediaApp-Other - truecharts.org/max_helm_version: "3.14" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.7.0 -dependencies: - - name: common - version: 20.3.12 - repository: oci://tccr.io/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: false -description: This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. -home: https://truecharts.org/charts/stable/notifiarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp -keywords: - - plex - - discord - - MediaApp-Other - - notification -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: notifiarr -sources: - - https://github.com/Notifiarr/notifiarr - - https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr - - https://hub.docker.com/r/golift/notifiarr -type: application -version: 4.8.14 diff --git a/stable/notifiarr/4.8.14/README.md b/stable/notifiarr/4.8.14/README.md deleted file mode 100644 index 2821defc38a..00000000000 --- a/stable/notifiarr/4.8.14/README.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/notifiarr) - -**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)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://tccr.io/truecharts/CHARTNAME` - -For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/ - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](https://truecharts.org/scale/guides/scale-intro). - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/ - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/notifiarr - -## Support - - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/stable/notifiarr/4.8.14/app-changelog.md b/stable/notifiarr/4.8.14/app-changelog.md deleted file mode 100644 index 3ed46f00a49..00000000000 --- a/stable/notifiarr/4.8.14/app-changelog.md +++ /dev/null @@ -1,63 +0,0 @@ - - -## [notifiarr-4.8.14](https://github.com/truecharts/charts/compare/notifiarr-4.6.0...notifiarr-4.8.14) (2024-04-26) - -### Chore - - - -- bump charts to ensure new icons are released - -- bump everything to release new doc pages - -- update groups html ([#21121](https://github.com/truecharts/charts/issues/21121)) - -- bump charts to release new docs to fix broken links - -- bump everything to regenerate readme's and site index - -- update docs links - -- update container image common to v20.3.2[@0722ebb](https://github.com/0722ebb) by renovate ([#20334](https://github.com/truecharts/charts/issues/20334)) - -- update container image common to v20.2.10[@6f99c97](https://github.com/6f99c97) by renovate ([#19876](https://github.com/truecharts/charts/issues/19876)) - -- update container image common to v20.3.7[@8cf9fc9](https://github.com/8cf9fc9) by renovate ([#20819](https://github.com/truecharts/charts/issues/20819)) - -- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361)) - -- update container image common to v20.2.2[@f7d0b92](https://github.com/f7d0b92) by renovate ([#19432](https://github.com/truecharts/charts/issues/19432)) - -- update container image common to v20.3.6[@27edfed](https://github.com/27edfed) by renovate ([#20599](https://github.com/truecharts/charts/issues/20599)) - -- update container image common to v20.3.5[@aedd88a](https://github.com/aedd88a) by renovate ([#20535](https://github.com/truecharts/charts/issues/20535)) - -- update container image common to v20.3.4[@d7e1b23](https://github.com/d7e1b23) by renovate ([#20527](https://github.com/truecharts/charts/issues/20527)) - -- update container image common to v20.3.3[@3876ba5](https://github.com/3876ba5) by renovate ([#20478](https://github.com/truecharts/charts/issues/20478)) - -- update container image common to v20.3.12[@3303278](https://github.com/3303278) by renovate ([#21384](https://github.com/truecharts/charts/issues/21384)) - -- update container image common to v20.3.11[@dae6129](https://github.com/dae6129) by renovate ([#20875](https://github.com/truecharts/charts/issues/20875)) - -- update container image common to v20.2.9[@10fd6c5](https://github.com/10fd6c5) by renovate ([#19817](https://github.com/truecharts/charts/issues/19817)) - -- update container image common to v20.2.4[@f245f5c](https://github.com/f245f5c) by renovate ([#19731](https://github.com/truecharts/charts/issues/19731)) - -- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673)) - -- make links relative - -- Fix broken links for Starlight ([#20737](https://github.com/truecharts/charts/issues/20737)) - -### Chore - - - -- rework SCALE catagories/groups to match helm and remove deprecated charts ([#21111](https://github.com/truecharts/charts/issues/21111)) - -### Fix - - - -- replace serviceexpert with externalinterfaces/networking-group in the SCALE GUI ([#21154](https://github.com/truecharts/charts/issues/21154)) \ No newline at end of file diff --git a/stable/notifiarr/4.8.14/app-readme.md b/stable/notifiarr/4.8.14/app-readme.md deleted file mode 100644 index d2e4be1f5e6..00000000000 --- a/stable/notifiarr/4.8.14/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/notifiarr](https://truecharts.org/charts/stable/notifiarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/notifiarr/4.8.14/charts/common-20.3.12.tgz b/stable/notifiarr/4.8.14/charts/common-20.3.12.tgz deleted file mode 100644 index 621bd9e5a5277eda78f0f106b46b6afdc6f56acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99407 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
    iZ#x$K}*@0J4scA@_XsWr>MiG1UB+r_n|MJ)K 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 S{{H{~0RR7!&lutWS_}Y48_RhB diff --git a/stable/notifiarr/4.8.14/icon-small.webp b/stable/notifiarr/4.8.14/icon-small.webp deleted file mode 100644 index ad6e61e696e2b2722df7ab0709526407366f0a9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmV;j15Nx=Nk&Gh0{{S5MM6+kP&il$0000G0000V0018V06|PpNc{l-00EF~+qNM| zD>6!L+qP}nwr$(CZQFXaZQHgHaUSlyk(u=c5itQoa=Ycc_*TH|lC#eD|05%=Z)y=M zAoZ@e?t`wI-z`7;TRx1B=~se%@_t-KA6D3bl5tvHkSAsQ$o$Y*6c=r>(^2uYeE+wT zr!>!gHo@F&D3I>z|F#|?F8rwp5Rs~2+43cFT#O4Oy79ZPsq^0f#B03x_~9*cCr_NY z_QHeJO=6Py>&{&oe;E20$MX(3xiV)T>8?rlSKLXd@Vp@_R(n{mhnoG{yQ2DK2gC_&SeUxWq{K3OL0iLc}a8+aSv!>^y;h(mTUmc zk7qDN9Mo`mw=zmnDdawr+fejQ0?jeaFv+MP-I>gqkVmpWb57Gv%InB_I;LW6{M%fy zUup`$AYAUR7vYN8&Q5F_atn=@pY4SLmP3%bv zp{K%?S~3;=Ca1cobx)`?2O##t_wfyh-@MIaNWTf|KxQCpkJ}t`*`H6c>7pK@{3;;I zCYguVIzK))_bI+p(N86XtY>6Js3(d(c8^rHA@P+J&B!?a*PlT)e#V;lQ(mkq@mB6N zy5P8n@({qJL(csgBH|2tyrc+$j+5xvpIOm;1k;X9WCs9NP&gol0RR9{2mqY{Dj)zL z00ICsC9nc?$`Qcct8N{jg8{Y!%m(NO><3r}px5koln20{?Z4~?wK;(Knv2PB24@BD z@=s`qi4H4?on8@X-~a&rorR`>%O1q;rkM9eM_s%I~;U!(^ z3<6IpzjOQUO2xBPRfP*z!k6SW>ROjdw`@UY3Nv4|4ah&pi~d z;>UvNBu|Al7QRKSUYcBg<(*obyyALh-D&~}e}wAl*%KZ{EX03@>v$$Mo{=U5%Qu{! zES45D^AMRfjMt>>G)#tB{Z_9qDruLLmC?>pwBbTAA_A8TuD%Bd{1S8JL5( U?lXN&t(NQOX!_(4h|&N60NJF?FaQ7m diff --git a/stable/notifiarr/4.8.14/icon.webp b/stable/notifiarr/4.8.14/icon.webp deleted file mode 100644 index 8bd018e82b751e0c41dd544b1333b59c50b7357d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7086 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 "$CONF" || echo "Failed to create a minimal config..." - - echo "Finished." - containers: - main: - env: - TMPDIR: /tmpdir - DN_API_KEY: "{{ .Values.notifiarr.apikey }}" - DN_BIND_ADDR: '{{ printf "0.0.0.0:%v" .Values.service.main.ports.main.port }}' - DN_UPSTREAMS_0: '{{ join " " .Values.notifiarr.upstreams }}' -persistence: - config: - enabled: true - targetSelector: - main: - main: - mountPath: /config - init-conf: - mountPath: /config - machine-id: - enabled: true - type: hostPath - hostPath: /etc/machine-id - mountPath: /etc/machine-id - readOnly: true - tmpdir: - enabled: true - type: emptyDir - mountPath: /tmpdir - medium: Memory -portal: - open: - enabled: true diff --git a/stable/notifiarr/4.8.14/questions.yaml b/stable/notifiarr/4.8.14/questions.yaml deleted file mode 100755 index bd97b8e4433..00000000000 --- a/stable/notifiarr/4.8.14/questions.yaml +++ /dev/null @@ -1,2995 +0,0 @@ -groups: - - name: Image - description: | - Configured the images to be used for the Chart. - It's wise to use "digest pinned" tags and to avoid using "latest". - - Checkout the following documentation for more information: - - https://truecharts.org/common/#images - - - - name: General - description: | - For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general. - - Checkout the following documentation for more information: - - https://truecharts.org/common/global/ - - https://truecharts.org/common/#tz - - https://truecharts.org/common/podoptions/ - - Image Pull Secrets - - - - name: Workload - description: | - These settings configure how the actual Pods and containers are running. - Generally, on SCALE, we only expose a limited subset of these settings for the primary workload and container. - - Checkout the following documentation for more information: - - https://truecharts.org/common/workload/ - - https://truecharts.org/common/container/ - - - - name: App Configuration - description: | - Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application. - Most options should have a Tooltip (Circled Question Mark) to further describe said option. - - To find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/ - - - name: Services - description: | - Service and Networking options for any applications are contained here. - Some applications may have complicated networking setups with multiple options or some may have no options here at all. - - Options here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes. - - Checkout the following documentation for more information: - - https://truecharts.org/common/service/ - - - name: Networking - description: | - Contains advanced networking options that are not actively supported by the TrueCharts team. - Currently only contains scaleExternalInterfaces. - - Checkout the following documentation for more information: - - https://truecharts.org/common/scaleexternalinterface/ - - - name: Persistence - description: | - Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types. - This storage is called Persistence since it is not deleted upon restart or upgrade of an application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/ - - https://truecharts.org/scale/guides/nfs-share/ - - https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath - - - - name: Ingress - description: | - Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names). - If you choose to enable this you must have a "Ingress Provider" aka "Reverse Proxy" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/) - It also requiresa DNS service to actually resolve the DNS name of the FQDN specified. - - Checkout the following documentation for more information: - - https://truecharts.org/common/ingress/ - - - - name: SecurityContext - description: | - The security settings for each application and/or permissions that each application may have for the files/directories created. - Each application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities. - - Unless necessary users are advised to keep this section mostly to defaults. - - Checkout the following documentation for more information: - - https://truecharts.org/common/securitycontext/ - - - - name: Resources - description: | - Resources limits that have been defined by each application are in this section. - Most will have a specific default that some users may want to change based on their specific hardware or needs. - - This also contains the options to mount GPUs or, more precisely, "request" GPU's to be mounted. - - Checkout the following documentation for more information: - - https://truecharts.org/common/resources/ - - - name: Devices - description: | - These are special "mountpoints" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts. - For clearity we've decided to seperate this from persistence on SCALE. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/device/ - - https://truecharts.org/scale/guides/pci-passthrough/ - - - name: Middlewares - description: Traefik Middlewares - - - name: StorageClass - description: | - StorageClasses define where to storage Storage. - - Checkout the following documentation for more information: - - - name: Metrics - description: | - Contains options to configure Prometheus metrics for the application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/metrics/ - - - - name: Addons - description: | - Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application’s defaults. - Things included here are VPN addons, Codeserver for editing files inside the application’s container, Netshoot for network troubelshooting, etc. - - Generally not required for use but may be necessary or usefull at times for specific applications. - - Checkout the following documentation for more information: - - https://truecharts.org/common/addons/ - - https://truecharts.org/scale/guides/vpn-setup/ - - - - name: Experimental - description: | - Experimental Configuration Options - Often these are not fully flushed-out, could randomly break or might not work at-all. - - - name: Postgresql - description: | - For Postgresql we use "CloudNative-PG" as a backend, which has to be installed first. - - Checkout the following documentation for more information: - - https://truecharts.org/common/cnpg/ - - https://truecharts.org/scale/guides/sql-export/ - - https://truecharts.org/scale/guides/recover-cnpg/ - - - name: Dependencies - description: | - contains dependency setting for which we, currently, do not have seperate catagories (yet) - - - - name: Documentation - description: | - We added this section to make everyone aware that OpenSource isn't always easy. - It doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects. - - Before installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/ - We would also advice going over our https://truecharts.org/scale/guides/scale-intro/ - and many of the other documentation pages... - -portals: - open: - protocols: - - "$kubernetes-resource_configmap_tcportal-open_protocol" - host: - - "$kubernetes-resource_configmap_tcportal-open_host" - ports: - - "$kubernetes-resource_configmap_tcportal-open_port" - -questions: - - variable: global - group: General - label: "Global Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: stopAll - label: Stop All - description: "Stops All Running pods and hibernates cnpg" - schema: - type: boolean - default: false - - - variable: workload - group: "Workload" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: type - label: Type (Advanced) - schema: - type: string - default: Deployment - enum: - - value: Deployment - description: Deployment - - value: DaemonSet - description: DaemonSet - - - variable: replicas - label: Replicas (Advanced) - description: Set the number of Replicas - schema: - type: int - show_if: [["type", "!=", "DaemonSet"]] - default: 1 - - - variable: podSpec - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: containers - label: Containers - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Container - schema: - additional_attrs: true - type: dict - attrs: - - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: command - label: Command - schema: - type: list - default: [] - items: - - variable: param - label: Param - schema: - type: string - - - variable: notifiarr - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: apikey - label: Notifiarr All API Key - description: | - Notifiarr All Integrations API key from https://notifiarr.com
    - NOTE: Use 'admin' as username and your API key as the password
    - for your first-time login credentials.
    - After login you must change your password from the UI. - schema: - type: string - default: "" - required: true - - variable: upstreams - label: Upstreams - description: Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled. - schema: - type: list - default: - - 172.16.0.0/16 - items: - - variable: upstreamEntry - label: Upstream - description: Upstream IP or CIDR - schema: - type: string - default: "" - required: true - - variable: TZ - label: Timezone - group: "General" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - - variable: podOptions - group: "General" - label: "Global Pod Options (Advanced)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: expertPodOpts - label: "Expert - Pod Options" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - label: "Host Networking" - schema: - type: boolean - default: false - - variable: dnsConfig - label: "DNS Configuration" - schema: - type: dict - additional_attrs: true - attrs: - - variable: options - label: "Options" - schema: - type: list - default: [{"name": "ndots", "value": "1"}] - items: - - variable: optionsEntry - label: "Option Entry" - schema: - type: dict - additional_attrs: true - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: value - label: "Value" - schema: - type: string - - variable: nameservers - label: "Nameservers" - schema: - type: list - default: [] - items: - - variable: nsEntry - label: "Nameserver Entry" - schema: - type: string - required: true - - variable: searches - label: "Searches" - schema: - type: list - default: [] - items: - - variable: searchEntry - label: "Search Entry" - schema: - type: string - required: true - - - variable: imagePullSecretList - group: "General" - label: "Image Pull Secrets" - schema: - type: list - default: [] - items: - - variable: pullsecretentry - label: "Pull Secret" - schema: - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - - variable: data - label: Data - schema: - type: dict - additional_attrs: true - attrs: - - variable: registry - label: "Registry" - schema: - type: string - required: true - default: "https://index.docker.io/v1/" - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - private: true - default: "" - - variable: email - label: "Email" - schema: - type: string - required: true - default: "" - - - variable: service - group: 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) - - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "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: 5454 - required: true - - variable: scaleExternalInterface - description: 'Add External Interfaces (Experimental, might change or be removed without further notice)' - label: Add external Interfaces (Experimental) - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - additional_attrs: true - 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: - additional_attrs: true - 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 - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - show_if: [["type", "=", "static"]] - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - show_if: [["type", "=", "static"]] - 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: serviceList - label: Add Manual Custom Services - group: 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: Persistence - schema: - additional_attrs: true - type: dict - attrs: - - - variable: config - 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: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - value: iscsi - description: iSCSI Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
    - Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: disabled - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: persistenceList - label: Additional App Storage - group: Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
    - Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: "disabled" - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name (Optional) - description: Defaults to chart name - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description (Optional) - description: Defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: icon - label: Icon (Optional) - description: Defaults to chart icon - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - variable: widget - label: Widget Settings - schema: - type: dict - additional_attrs: true - show_if: [["enabled", "=", true]] - attrs: - - variable: enabled - label: Enable Widget - description: When disabled all widget annotations are skipped. - schema: - type: boolean - default: true - - variable: custom - label: Options - schema: - type: dict - additional_attrs: true - attrs: - - variable: key - label: API-key (key) - schema: - type: string - default: "" - - variable: customkv - label: Custom Options - schema: - type: list - default: [] - items: - - variable: option - label: Option - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - default: "" - required: true - - variable: value - label: Value - schema: - type: string - default: "" - required: true - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: overrideService - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - show_if: [["certificateIssuer", "=", ""]] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: Use Custom Secret (Advanced) - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: "Allow Cross Origin Requests" - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: namespace - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description - description: defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - - variable: securityContext - group: SecurityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: container - label: Container - schema: - additional_attrs: true - type: dict - attrs: - # Settings from questions.yaml get appended here on a per-app basis - - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 568 - # Settings from questions.yaml get appended here on a per-app basis - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - show_if: [["runAsUser", "=", 0]] - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "0022" - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - - variable: pod - label: Pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - # Settings from questions.yaml get appended here on a per-app basis - - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: resources - group: Resources - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: 'gpu.intel.com/i915' - label: Add Intel i915 GPUs - schema: - type: int - default: 0 - - variable: 'nvidia.com/gpu' - label: Add NVIDIA GPUs (Experimental) - schema: - type: int - default: 0 - - variable: 'amd.com/gpu' - label: Add AMD GPUs - schema: - type: int - default: 0 - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: device - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - -# - variable: horizontalPodAutoscaler -# group: Experimental -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Experimental - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: ingress - label: "Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - variable: scaleCert - label: 'Use TrueNAS SCALE Certificate (Deprecated)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: int - $ref: - - "definitions/certificate" - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: netshoot - label: Netshoot - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: envList - label: Netshoot Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: gluetun - description: Gluetun - - value: tailscale - description: Tailscale - - value: openvpn - description: OpenVPN (Deprecated) - - value: wireguard - description: Wireguard (Deprecated) - - variable: openvpn - label: OpenVPN Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - show_if: [["username", "!=", ""]] - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: string - show_if: [["type", "!=", "disabled"]] - default: "" - - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - max_length: 10240 - - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
    https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
    https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true - diff --git a/stable/notifiarr/4.8.14/templates/common.yaml b/stable/notifiarr/4.8.14/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/stable/notifiarr/4.8.14/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/stable/notifiarr/4.8.14/values.yaml b/stable/notifiarr/4.8.14/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/notifiarr/5.0.10/.helmignore b/stable/notifiarr/5.0.10/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/stable/notifiarr/5.0.10/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/stable/notifiarr/5.0.10/CHANGELOG.md b/stable/notifiarr/5.0.10/CHANGELOG.md deleted file mode 100644 index 941abb8a218..00000000000 --- a/stable/notifiarr/5.0.10/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -*for the complete changelog, please refer to the website* - -**Important:** \ No newline at end of file diff --git a/stable/notifiarr/5.0.10/Chart.yaml b/stable/notifiarr/5.0.10/Chart.yaml deleted file mode 100644 index cd9f4d59cab..00000000000 --- a/stable/notifiarr/5.0.10/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -annotations: - truecharts.org/category: MediaApp-Other - truecharts.org/max_helm_version: "3.14" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.7.1 -dependencies: - - name: common - version: 23.0.10 - repository: oci://tccr.io/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: false -description: This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. -home: https://truecharts.org/charts/stable/notifiarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp -keywords: - - plex - - discord - - MediaApp-Other - - notification -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: notifiarr -sources: - - https://github.com/Notifiarr/notifiarr - - https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr - - https://hub.docker.com/r/golift/notifiarr -type: application -version: 5.0.10 diff --git a/stable/notifiarr/5.0.10/README.md b/stable/notifiarr/5.0.10/README.md deleted file mode 100644 index d6ff9e09f3f..00000000000 --- a/stable/notifiarr/5.0.10/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/notifiarr) - -**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)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://tccr.io/truecharts/CHARTNAME` - -For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/ - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](https://truecharts.org/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/notifiarr - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/charts/stable/notifiarr/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/ - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/stable/notifiarr/5.0.10/app-readme.md b/stable/notifiarr/5.0.10/app-readme.md deleted file mode 100644 index d2e4be1f5e6..00000000000 --- a/stable/notifiarr/5.0.10/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/notifiarr](https://truecharts.org/charts/stable/notifiarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/notifiarr/5.0.10/charts/common-23.0.10.tgz b/stable/notifiarr/5.0.10/charts/common-23.0.10.tgz deleted file mode 100644 index 5eefcb329be559e54998b5f211021daca81c39ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96939 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 diff --git a/stable/notifiarr/5.0.10/icon-small.webp b/stable/notifiarr/5.0.10/icon-small.webp deleted file mode 100644 index ad6e61e696e2b2722df7ab0709526407366f0a9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmV;j15Nx=Nk&Gh0{{S5MM6+kP&il$0000G0000V0018V06|PpNc{l-00EF~+qNM| zD>6!L+qP}nwr$(CZQFXaZQHgHaUSlyk(u=c5itQoa=Ycc_*TH|lC#eD|05%=Z)y=M zAoZ@e?t`wI-z`7;TRx1B=~se%@_t-KA6D3bl5tvHkSAsQ$o$Y*6c=r>(^2uYeE+wT zr!>!gHo@F&D3I>z|F#|?F8rwp5Rs~2+43cFT#O4Oy79ZPsq^0f#B03x_~9*cCr_NY z_QHeJO=6Py>&{&oe;E20$MX(3xiV)T>8?rlSKLXd@Vp@_R(n{mhnoG{yQ2DK2gC_&SeUxWq{K3OL0iLc}a8+aSv!>^y;h(mTUmc zk7qDN9Mo`mw=zmnDdawr+fejQ0?jeaFv+MP-I>gqkVmpWb57Gv%InB_I;LW6{M%fy zUup`$AYAUR7vYN8&Q5F_atn=@pY4SLmP3%bv zp{K%?S~3;=Ca1cobx)`?2O##t_wfyh-@MIaNWTf|KxQCpkJ}t`*`H6c>7pK@{3;;I zCYguVIzK))_bI+p(N86XtY>6Js3(d(c8^rHA@P+J&B!?a*PlT)e#V;lQ(mkq@mB6N zy5P8n@({qJL(csgBH|2tyrc+$j+5xvpIOm;1k;X9WCs9NP&gol0RR9{2mqY{Dj)zL z00ICsC9nc?$`Qcct8N{jg8{Y!%m(NO><3r}px5koln20{?Z4~?wK;(Knv2PB24@BD z@=s`qi4H4?on8@X-~a&rorR`>%O1q;rkM9eM_s%I~;U!(^ z3<6IpzjOQUO2xBPRfP*z!k6SW>ROjdw`@UY3Nv4|4ah&pi~d z;>UvNBu|Al7QRKSUYcBg<(*obyyALh-D&~}e}wAl*%KZ{EX03@>v$$Mo{=U5%Qu{! zES45D^AMRfjMt>>G)#tB{Z_9qDruLLmC?>pwBbTAA_A8TuD%Bd{1S8JL5( U?lXN&t(NQOX!_(4h|&N60NJF?FaQ7m diff --git a/stable/notifiarr/5.0.10/icon.webp b/stable/notifiarr/5.0.10/icon.webp deleted file mode 100644 index 8bd018e82b751e0c41dd544b1333b59c50b7357d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7086 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 "$CONF" || echo "Failed to create a minimal config..." - - echo "Finished." - containers: - main: - env: - TMPDIR: /tmpdir - DN_API_KEY: "{{ .Values.notifiarr.apikey }}" - DN_BIND_ADDR: '{{ printf "0.0.0.0:%v" .Values.service.main.ports.main.port }}' - DN_UPSTREAMS_0: '{{ join " " .Values.notifiarr.upstreams }}' -persistence: - config: - enabled: true - targetSelector: - main: - main: - mountPath: /config - init-conf: - mountPath: /config - machine-id: - enabled: true - type: hostPath - hostPath: /etc/machine-id - mountPath: /etc/machine-id - readOnly: true - tmpdir: - enabled: true - type: emptyDir - mountPath: /tmpdir - medium: Memory -portal: - open: - enabled: true diff --git a/stable/notifiarr/5.0.10/questions.yaml b/stable/notifiarr/5.0.10/questions.yaml deleted file mode 100755 index 83b4ad71379..00000000000 --- a/stable/notifiarr/5.0.10/questions.yaml +++ /dev/null @@ -1,3188 +0,0 @@ -groups: - - name: Image - description: | - Configured the images to be used for the Chart. - It's wise to use "digest pinned" tags and to avoid using "latest". - - Checkout the following documentation for more information: - - https://truecharts.org/common/#images - - - - name: General - description: | - For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general. - - Checkout the following documentation for more information: - - https://truecharts.org/common/global/ - - https://truecharts.org/common/#tz - - https://truecharts.org/common/podoptions/ - - Image Pull Secrets - - - - name: Workload - description: | - These settings configure how the actual Pods and containers are running. - Generally, on SCALE, we only expose a limited subset of these settings for the primary workload and container. - - Checkout the following documentation for more information: - - https://truecharts.org/common/workload/ - - https://truecharts.org/common/container/ - - - - name: App Configuration - description: | - Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application. - Most options should have a Tooltip (Circled Question Mark) to further describe said option. - - To find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/ - - - name: Services - description: | - Service and Networking options for any applications are contained here. - Some applications may have complicated networking setups with multiple options or some may have no options here at all. - - Options here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes. - - Checkout the following documentation for more information: - - https://truecharts.org/common/service/ - - - name: Networking - description: | - Contains advanced networking options that are not actively supported by the TrueCharts team. - Currently only contains scaleExternalInterfaces. - - Checkout the following documentation for more information: - - https://truecharts.org/common/scaleexternalinterface/ - - - name: Persistence - description: | - Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types. - This storage is called Persistence since it is not deleted upon restart or upgrade of an application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/ - - https://truecharts.org/scale/guides/nfs-share/ - - https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath - - - - name: Ingress - description: | - Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names). - If you choose to enable this you must have a "Ingress Provider" aka "Reverse Proxy" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/) - It also requiresa DNS service to actually resolve the DNS name of the FQDN specified. - - Checkout the following documentation for more information: - - https://truecharts.org/common/ingress/ - - - - name: SecurityContext - description: | - The security settings for each application and/or permissions that each application may have for the files/directories created. - Each application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities. - - Unless necessary users are advised to keep this section mostly to defaults. - - Checkout the following documentation for more information: - - https://truecharts.org/common/securitycontext/ - - - - name: Resources - description: | - Resources limits that have been defined by each application are in this section. - Most will have a specific default that some users may want to change based on their specific hardware or needs. - - This also contains the options to mount GPUs or, more precisely, "request" GPU's to be mounted. - - Checkout the following documentation for more information: - - https://truecharts.org/common/resources/ - - - name: Devices - description: | - These are special "mountpoints" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts. - For clearity we've decided to seperate this from persistence on SCALE. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/device/ - - https://truecharts.org/scale/guides/pci-passthrough/ - - - name: Middlewares - description: Traefik Middlewares - - - name: StorageClass - description: | - StorageClasses define where to storage Storage. - - Checkout the following documentation for more information: - - - name: Metrics - description: | - Contains options to configure Prometheus metrics for the application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/metrics/ - - - - name: Addons - description: | - Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application’s defaults. - Things included here are VPN addons, Codeserver for editing files inside the application’s container, Netshoot for network troubelshooting, etc. - - Generally not required for use but may be necessary or usefull at times for specific applications. - - Checkout the following documentation for more information: - - https://truecharts.org/common/addons/ - - https://truecharts.org/scale/guides/vpn-setup/ - - - - name: Experimental - description: | - Experimental Configuration Options - Often these are not fully flushed-out, could randomly break or might not work at-all. - - - name: Postgresql - description: | - For Postgresql we use "CloudNative-PG" as a backend, which has to be installed first. - - Checkout the following documentation for more information: - - https://truecharts.org/common/cnpg/ - - https://truecharts.org/scale/guides/sql-export/ - - https://truecharts.org/scale/guides/recover-cnpg/ - - - name: Dependencies - description: | - contains dependency setting for which we, currently, do not have seperate catagories (yet) - - - - name: Documentation - description: | - We added this section to make everyone aware that OpenSource isn't always easy. - It doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects. - - Before installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/ - We would also advice going over our https://truecharts.org/scale/guides/scale-intro/ - and many of the other documentation pages... - -portals: - open: - protocols: - - "$kubernetes-resource_configmap_tcportal-open_protocol" - host: - - "$kubernetes-resource_configmap_tcportal-open_host" - ports: - - "$kubernetes-resource_configmap_tcportal-open_port" - -questions: - - variable: global - group: General - label: "Global Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: stopAll - label: Stop All - description: "Stops All Running pods and hibernates cnpg" - schema: - type: boolean - default: false - - - variable: credentialsList - group: General - label: "Credentials (Experimental)" - schema: - type: list - default: [] - items: - - variable: credentialsEntry - label: "Enter Credentials" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: "Name" - schema: - type: string - required: true - default: "" - - variable: type - label: Type - description: "Type of Credential" - schema: - type: string - default: "s3" - enum: - - value: s3 - description: s3 Storage - - variable: url - label: "url" - schema: - type: string - default: "" - required: true - - variable: path - label: "path" - description: "Path Prefix not needed for most cases" - schema: - type: string - default: "" - - variable: bucket - label: "bucket" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "" - required: true - - variable: accessKey - label: "accessKey" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "" - required: true - - variable: secretKey - label: "secretKey" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "" - required: true - - variable: encrKey - label: "encrKey" - description: "The Encryption key is needed for tools like volsync if not needed it will be ignored" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "MYSECRETPASSPHRASE" - required: true - - - variable: workload - group: "Workload" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: type - label: Type (Advanced) - schema: - type: string - default: Deployment - enum: - - value: Deployment - description: Deployment - - value: DaemonSet - description: DaemonSet - - - variable: replicas - label: Replicas (Advanced) - description: Set the number of Replicas - schema: - type: int - show_if: [["type", "!=", "DaemonSet"]] - default: 1 - - - variable: podSpec - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: containers - label: Containers - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Container - schema: - additional_attrs: true - type: dict - attrs: - - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: command - label: Command - schema: - type: list - default: [] - items: - - variable: param - label: Param - schema: - type: string - - - variable: notifiarr - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: apikey - label: Notifiarr All API Key - description: | - Notifiarr All Integrations API key from https://notifiarr.com
    - NOTE: Use 'admin' as username and your API key as the password
    - for your first-time login credentials.
    - After login you must change your password from the UI. - schema: - type: string - default: "" - required: true - - variable: upstreams - label: Upstreams - description: Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled. - schema: - type: list - default: - - 172.16.0.0/16 - items: - - variable: upstreamEntry - label: Upstream - description: Upstream IP or CIDR - schema: - type: string - default: "" - required: true - - variable: TZ - label: Timezone - group: "General" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - - variable: podOptions - group: "General" - label: "Global Pod Options (Advanced)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: expertPodOpts - label: "Expert - Pod Options" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - label: "Host Networking" - schema: - type: boolean - default: false - - variable: dnsConfig - label: "DNS Configuration" - schema: - type: dict - additional_attrs: true - attrs: - - variable: options - label: "Options" - schema: - type: list - default: [{"name": "ndots", "value": "1"}] - items: - - variable: optionsEntry - label: "Option Entry" - schema: - type: dict - additional_attrs: true - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: value - label: "Value" - schema: - type: string - - variable: nameservers - label: "Nameservers" - schema: - type: list - default: [] - items: - - variable: nsEntry - label: "Nameserver Entry" - schema: - type: string - required: true - - variable: searches - label: "Searches" - schema: - type: list - default: [] - items: - - variable: searchEntry - label: "Search Entry" - schema: - type: string - required: true - - - variable: imagePullSecretList - group: "General" - label: "Image Pull Secrets" - schema: - type: list - default: [] - items: - - variable: pullsecretentry - label: "Pull Secret" - schema: - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - - variable: data - label: Data - schema: - type: dict - additional_attrs: true - attrs: - - variable: registry - label: "Registry" - schema: - type: string - required: true - default: "https://index.docker.io/v1/" - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - private: true - default: "" - - variable: email - label: "Email" - schema: - type: string - required: true - default: "" - - - variable: service - group: 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) - - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "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: 5454 - required: true - - variable: scaleExternalInterface - description: 'Add External Interfaces (Experimental, might change or be removed without further notice)' - label: Add external Interfaces (Experimental) - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - additional_attrs: true - 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: - additional_attrs: true - 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 - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - show_if: [["type", "=", "static"]] - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - show_if: [["type", "=", "static"]] - 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: serviceList - label: Add Manual Custom Services - group: 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: Persistence - schema: - additional_attrs: true - type: dict - attrs: - - - variable: config - 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: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - value: iscsi - description: iSCSI Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
    - Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: volsync - label: 'VolSync (Experimental)' - description: Backup, Restore and Synchronise PVC storage - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: VolSyncEntry - label: VolSync Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: "Name of backup configuration" - schema: - type: string - default: "" - required: true - - variable: type - label: Type VolSync/Backup - description: Sets the VolSync Type - schema: - type: string - default: "restic" - enum: - - value: restic - description: Restic - - variable: credentials - label: Credentials - description: "Name of credentials in the credentials section" - schema: - type: string - default: "" - required: true - - variable: dest - label: VolSync Destination (Restore) - description: VolSYnc Destination is the location where data is the reciever and configures recovery of backups - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: src - label: VolSync Source (Backup) - description: VolSYnc Source is the location where data is the sender and creates backups to storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: disabled - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: persistenceList - label: Additional App Storage - group: Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
    - Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: volsync - label: 'VolSync (Experimental)' - description: Backup, Restore and Synchronise PVC storage - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: VolSyncEntry - label: VolSync Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: "Name of backup configuration" - schema: - type: string - default: "" - required: true - - variable: type - label: Type VolSync/Backup - description: Sets the VolSync Type - schema: - type: string - default: "restic" - enum: - - value: restic - description: Restic - - variable: credentials - label: Credentials - description: "Name of credentials in the credentials section" - schema: - type: string - default: "" - required: true - - variable: dest - label: VolSync Destination (Restore) - description: VolSYnc Destination is the location where data is the reciever and configures recovery of backups - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: src - label: VolSync Source (Backup) - description: VolSYnc Source is the location where data is the sender and creates backups to storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: "disabled" - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name (Optional) - description: Defaults to chart name - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description (Optional) - description: Defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: icon - label: Icon (Optional) - description: Defaults to chart icon - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - variable: widget - label: Widget Settings - schema: - type: dict - additional_attrs: true - show_if: [["enabled", "=", true]] - attrs: - - variable: enabled - label: Enable Widget - description: When disabled all widget annotations are skipped. - schema: - type: boolean - default: true - - variable: custom - label: Options - schema: - type: dict - additional_attrs: true - attrs: - - variable: key - label: API-key (key) - schema: - type: string - default: "" - - variable: customkv - label: Custom Options - schema: - type: list - default: [] - items: - - variable: option - label: Option - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - default: "" - required: true - - variable: value - label: Value - schema: - type: string - default: "" - required: true - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: overrideService - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - show_if: [["certificateIssuer", "=", ""]] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: Use Custom Secret (Advanced) - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: "Allow Cross Origin Requests" - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: namespace - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description - description: defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - - variable: securityContext - group: SecurityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: container - label: Container - schema: - additional_attrs: true - type: dict - attrs: - # Settings from questions.yaml get appended here on a per-app basis - - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 568 - # Settings from questions.yaml get appended here on a per-app basis - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - show_if: [["runAsUser", "=", 0]] - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "0022" - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - - variable: pod - label: Pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - # Settings from questions.yaml get appended here on a per-app basis - - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: resources - group: Resources - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: 'gpu.intel.com/i915' - label: Add Intel i915 GPUs - schema: - type: int - default: 0 - - variable: 'nvidia.com/gpu' - label: Add NVIDIA GPUs (Experimental) - schema: - type: int - default: 0 - - variable: 'amd.com/gpu' - label: Add AMD GPUs - schema: - type: int - default: 0 - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: device - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - -# - variable: horizontalPodAutoscaler -# group: Experimental -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Experimental - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: ingress - label: "Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - variable: scaleCert - label: 'Use TrueNAS SCALE Certificate (Deprecated)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: int - $ref: - - "definitions/certificate" - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: netshoot - label: Netshoot - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: envList - label: Netshoot Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: gluetun - description: Gluetun - - value: tailscale - description: Tailscale - - value: openvpn - description: OpenVPN (Deprecated) - - value: wireguard - description: Wireguard (Deprecated) - - variable: openvpn - label: OpenVPN Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - show_if: [["username", "!=", ""]] - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: string - show_if: [["type", "!=", "disabled"]] - default: "" - - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - max_length: 10240 - - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
    https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
    https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true - diff --git a/stable/notifiarr/5.0.10/templates/common.yaml b/stable/notifiarr/5.0.10/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/stable/notifiarr/5.0.10/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/stable/notifiarr/5.0.10/values.yaml b/stable/notifiarr/5.0.10/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/notifiarr/5.0.9/.helmignore b/stable/notifiarr/5.0.9/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/stable/notifiarr/5.0.9/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/stable/notifiarr/5.0.9/CHANGELOG.md b/stable/notifiarr/5.0.9/CHANGELOG.md deleted file mode 100644 index 941abb8a218..00000000000 --- a/stable/notifiarr/5.0.9/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -*for the complete changelog, please refer to the website* - -**Important:** \ No newline at end of file diff --git a/stable/notifiarr/5.0.9/Chart.yaml b/stable/notifiarr/5.0.9/Chart.yaml deleted file mode 100644 index 0a1a6be59a8..00000000000 --- a/stable/notifiarr/5.0.9/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -annotations: - truecharts.org/category: MediaApp-Other - truecharts.org/max_helm_version: "3.14" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.7.1 -dependencies: - - name: common - version: 23.0.9 - repository: oci://tccr.io/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: false -description: This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. -home: https://truecharts.org/charts/stable/notifiarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp -keywords: - - plex - - discord - - MediaApp-Other - - notification -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: notifiarr -sources: - - https://github.com/Notifiarr/notifiarr - - https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr - - https://hub.docker.com/r/golift/notifiarr -type: application -version: 5.0.9 diff --git a/stable/notifiarr/5.0.9/README.md b/stable/notifiarr/5.0.9/README.md deleted file mode 100644 index d6ff9e09f3f..00000000000 --- a/stable/notifiarr/5.0.9/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/notifiarr) - -**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)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://tccr.io/truecharts/CHARTNAME` - -For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/ - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](https://truecharts.org/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/notifiarr - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/charts/stable/notifiarr/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/ - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/stable/notifiarr/5.0.9/app-readme.md b/stable/notifiarr/5.0.9/app-readme.md deleted file mode 100644 index d2e4be1f5e6..00000000000 --- a/stable/notifiarr/5.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/notifiarr](https://truecharts.org/charts/stable/notifiarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/notifiarr/5.0.9/charts/common-23.0.9.tgz b/stable/notifiarr/5.0.9/charts/common-23.0.9.tgz deleted file mode 100644 index 12f30c4288409c1eca57b9cf3d9ebcabf6be3aee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96899 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 z 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 U?lXN&t(NQOX!_(4h|&N60NJF?FaQ7m diff --git a/stable/notifiarr/5.0.9/icon.webp b/stable/notifiarr/5.0.9/icon.webp deleted file mode 100644 index 8bd018e82b751e0c41dd544b1333b59c50b7357d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7086 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 "$CONF" || echo "Failed to create a minimal config..." - - echo "Finished." - containers: - main: - env: - TMPDIR: /tmpdir - DN_API_KEY: "{{ .Values.notifiarr.apikey }}" - DN_BIND_ADDR: '{{ printf "0.0.0.0:%v" .Values.service.main.ports.main.port }}' - DN_UPSTREAMS_0: '{{ join " " .Values.notifiarr.upstreams }}' -persistence: - config: - enabled: true - targetSelector: - main: - main: - mountPath: /config - init-conf: - mountPath: /config - machine-id: - enabled: true - type: hostPath - hostPath: /etc/machine-id - mountPath: /etc/machine-id - readOnly: true - tmpdir: - enabled: true - type: emptyDir - mountPath: /tmpdir - medium: Memory -portal: - open: - enabled: true diff --git a/stable/notifiarr/5.0.9/questions.yaml b/stable/notifiarr/5.0.9/questions.yaml deleted file mode 100755 index 83b4ad71379..00000000000 --- a/stable/notifiarr/5.0.9/questions.yaml +++ /dev/null @@ -1,3188 +0,0 @@ -groups: - - name: Image - description: | - Configured the images to be used for the Chart. - It's wise to use "digest pinned" tags and to avoid using "latest". - - Checkout the following documentation for more information: - - https://truecharts.org/common/#images - - - - name: General - description: | - For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general. - - Checkout the following documentation for more information: - - https://truecharts.org/common/global/ - - https://truecharts.org/common/#tz - - https://truecharts.org/common/podoptions/ - - Image Pull Secrets - - - - name: Workload - description: | - These settings configure how the actual Pods and containers are running. - Generally, on SCALE, we only expose a limited subset of these settings for the primary workload and container. - - Checkout the following documentation for more information: - - https://truecharts.org/common/workload/ - - https://truecharts.org/common/container/ - - - - name: App Configuration - description: | - Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application. - Most options should have a Tooltip (Circled Question Mark) to further describe said option. - - To find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/ - - - name: Services - description: | - Service and Networking options for any applications are contained here. - Some applications may have complicated networking setups with multiple options or some may have no options here at all. - - Options here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes. - - Checkout the following documentation for more information: - - https://truecharts.org/common/service/ - - - name: Networking - description: | - Contains advanced networking options that are not actively supported by the TrueCharts team. - Currently only contains scaleExternalInterfaces. - - Checkout the following documentation for more information: - - https://truecharts.org/common/scaleexternalinterface/ - - - name: Persistence - description: | - Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types. - This storage is called Persistence since it is not deleted upon restart or upgrade of an application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/ - - https://truecharts.org/scale/guides/nfs-share/ - - https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath - - - - name: Ingress - description: | - Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names). - If you choose to enable this you must have a "Ingress Provider" aka "Reverse Proxy" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/) - It also requiresa DNS service to actually resolve the DNS name of the FQDN specified. - - Checkout the following documentation for more information: - - https://truecharts.org/common/ingress/ - - - - name: SecurityContext - description: | - The security settings for each application and/or permissions that each application may have for the files/directories created. - Each application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities. - - Unless necessary users are advised to keep this section mostly to defaults. - - Checkout the following documentation for more information: - - https://truecharts.org/common/securitycontext/ - - - - name: Resources - description: | - Resources limits that have been defined by each application are in this section. - Most will have a specific default that some users may want to change based on their specific hardware or needs. - - This also contains the options to mount GPUs or, more precisely, "request" GPU's to be mounted. - - Checkout the following documentation for more information: - - https://truecharts.org/common/resources/ - - - name: Devices - description: | - These are special "mountpoints" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts. - For clearity we've decided to seperate this from persistence on SCALE. - - Checkout the following documentation for more information: - - https://truecharts.org/common/persistence/device/ - - https://truecharts.org/scale/guides/pci-passthrough/ - - - name: Middlewares - description: Traefik Middlewares - - - name: StorageClass - description: | - StorageClasses define where to storage Storage. - - Checkout the following documentation for more information: - - - name: Metrics - description: | - Contains options to configure Prometheus metrics for the application. - - Checkout the following documentation for more information: - - https://truecharts.org/common/metrics/ - - - - name: Addons - description: | - Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application’s defaults. - Things included here are VPN addons, Codeserver for editing files inside the application’s container, Netshoot for network troubelshooting, etc. - - Generally not required for use but may be necessary or usefull at times for specific applications. - - Checkout the following documentation for more information: - - https://truecharts.org/common/addons/ - - https://truecharts.org/scale/guides/vpn-setup/ - - - - name: Experimental - description: | - Experimental Configuration Options - Often these are not fully flushed-out, could randomly break or might not work at-all. - - - name: Postgresql - description: | - For Postgresql we use "CloudNative-PG" as a backend, which has to be installed first. - - Checkout the following documentation for more information: - - https://truecharts.org/common/cnpg/ - - https://truecharts.org/scale/guides/sql-export/ - - https://truecharts.org/scale/guides/recover-cnpg/ - - - name: Dependencies - description: | - contains dependency setting for which we, currently, do not have seperate catagories (yet) - - - - name: Documentation - description: | - We added this section to make everyone aware that OpenSource isn't always easy. - It doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects. - - Before installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/ - We would also advice going over our https://truecharts.org/scale/guides/scale-intro/ - and many of the other documentation pages... - -portals: - open: - protocols: - - "$kubernetes-resource_configmap_tcportal-open_protocol" - host: - - "$kubernetes-resource_configmap_tcportal-open_host" - ports: - - "$kubernetes-resource_configmap_tcportal-open_port" - -questions: - - variable: global - group: General - label: "Global Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: stopAll - label: Stop All - description: "Stops All Running pods and hibernates cnpg" - schema: - type: boolean - default: false - - - variable: credentialsList - group: General - label: "Credentials (Experimental)" - schema: - type: list - default: [] - items: - - variable: credentialsEntry - label: "Enter Credentials" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: "Name" - schema: - type: string - required: true - default: "" - - variable: type - label: Type - description: "Type of Credential" - schema: - type: string - default: "s3" - enum: - - value: s3 - description: s3 Storage - - variable: url - label: "url" - schema: - type: string - default: "" - required: true - - variable: path - label: "path" - description: "Path Prefix not needed for most cases" - schema: - type: string - default: "" - - variable: bucket - label: "bucket" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "" - required: true - - variable: accessKey - label: "accessKey" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "" - required: true - - variable: secretKey - label: "secretKey" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "" - required: true - - variable: encrKey - label: "encrKey" - description: "The Encryption key is needed for tools like volsync if not needed it will be ignored" - schema: - show_if: [["type", "=", "s3"]] - type: string - default: "MYSECRETPASSPHRASE" - required: true - - - variable: workload - group: "Workload" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: type - label: Type (Advanced) - schema: - type: string - default: Deployment - enum: - - value: Deployment - description: Deployment - - value: DaemonSet - description: DaemonSet - - - variable: replicas - label: Replicas (Advanced) - description: Set the number of Replicas - schema: - type: int - show_if: [["type", "!=", "DaemonSet"]] - default: 1 - - - variable: podSpec - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: containers - label: Containers - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Container - schema: - additional_attrs: true - type: dict - attrs: - - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: command - label: Command - schema: - type: list - default: [] - items: - - variable: param - label: Param - schema: - type: string - - - variable: notifiarr - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: apikey - label: Notifiarr All API Key - description: | - Notifiarr All Integrations API key from https://notifiarr.com
    - NOTE: Use 'admin' as username and your API key as the password
    - for your first-time login credentials.
    - After login you must change your password from the UI. - schema: - type: string - default: "" - required: true - - variable: upstreams - label: Upstreams - description: Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled. - schema: - type: list - default: - - 172.16.0.0/16 - items: - - variable: upstreamEntry - label: Upstream - description: Upstream IP or CIDR - schema: - type: string - default: "" - required: true - - variable: TZ - label: Timezone - group: "General" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - - variable: podOptions - group: "General" - label: "Global Pod Options (Advanced)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: expertPodOpts - label: "Expert - Pod Options" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - label: "Host Networking" - schema: - type: boolean - default: false - - variable: dnsConfig - label: "DNS Configuration" - schema: - type: dict - additional_attrs: true - attrs: - - variable: options - label: "Options" - schema: - type: list - default: [{"name": "ndots", "value": "1"}] - items: - - variable: optionsEntry - label: "Option Entry" - schema: - type: dict - additional_attrs: true - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: value - label: "Value" - schema: - type: string - - variable: nameservers - label: "Nameservers" - schema: - type: list - default: [] - items: - - variable: nsEntry - label: "Nameserver Entry" - schema: - type: string - required: true - - variable: searches - label: "Searches" - schema: - type: list - default: [] - items: - - variable: searchEntry - label: "Search Entry" - schema: - type: string - required: true - - - variable: imagePullSecretList - group: "General" - label: "Image Pull Secrets" - schema: - type: list - default: [] - items: - - variable: pullsecretentry - label: "Pull Secret" - schema: - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - - variable: data - label: Data - schema: - type: dict - additional_attrs: true - attrs: - - variable: registry - label: "Registry" - schema: - type: string - required: true - default: "https://index.docker.io/v1/" - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - private: true - default: "" - - variable: email - label: "Email" - schema: - type: string - required: true - default: "" - - - variable: service - group: 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) - - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "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: 5454 - required: true - - variable: scaleExternalInterface - description: 'Add External Interfaces (Experimental, might change or be removed without further notice)' - label: Add external Interfaces (Experimental) - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - additional_attrs: true - 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: - additional_attrs: true - 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 - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - show_if: [["type", "=", "static"]] - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - show_if: [["type", "=", "static"]] - 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: serviceList - label: Add Manual Custom Services - group: 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: Persistence - schema: - additional_attrs: true - type: dict - attrs: - - - variable: config - 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: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - value: iscsi - description: iSCSI Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
    - Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: volsync - label: 'VolSync (Experimental)' - description: Backup, Restore and Synchronise PVC storage - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: VolSyncEntry - label: VolSync Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: "Name of backup configuration" - schema: - type: string - default: "" - required: true - - variable: type - label: Type VolSync/Backup - description: Sets the VolSync Type - schema: - type: string - default: "restic" - enum: - - value: restic - description: Restic - - variable: credentials - label: Credentials - description: "Name of credentials in the credentials section" - schema: - type: string - default: "" - required: true - - variable: dest - label: VolSync Destination (Restore) - description: VolSYnc Destination is the location where data is the reciever and configures recovery of backups - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: src - label: VolSync Source (Backup) - description: VolSYnc Source is the location where data is the sender and creates backups to storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: disabled - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: persistenceList - label: Additional App Storage - group: Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: iscsi - label: iSCSI Options - schema: - show_if: [["type", "=", "iscsi"]] - type: dict - additional_attrs: true - attrs: - - variable: targetPortal - label: targetPortal - schema: - type: string - required: true - default: "" - - variable: iqn - label: iqn - schema: - type: string - required: true - default: "" - - variable: lun - label: lun - schema: - type: int - default: 0 - - variable: authSession - label: authSession - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: authDiscovery - label: authDiscovery - schema: - type: dict - additional_attrs: true - attrs: - - variable: username - label: username - schema: - type: string - default: "" - - variable: password - label: password - schema: - type: string - default: "" - - variable: usernameInitiator - label: usernameInitiator - schema: - type: string - default: "" - - variable: passwordInitiator - label: passwordInitiator - schema: - type: string - default: "" - - variable: autoPermissions - label: Automatic Permissions Configuration - description: Automatically set permissions - schema: - show_if: [["type", "!=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: chown - label: Run CHOWN - description: | - It will run CHOWN on the path with the given fsGroup - schema: - type: boolean - default: false - - variable: chmod - label: Run CHMOD - description: | - It will run CHMOD on the path with the given value
    - Format should be 3 digits, e.g. 770 - schema: - type: string - valid_chars: '[0-9]{3}' - default: "" - - variable: recursive - label: Recursive - description: | - It will run CHOWN and CHMOD recursively - schema: - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storageClass - label: 'storageClass (Advanced)' - description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: "" - - variable: volsync - label: 'VolSync (Experimental)' - description: Backup, Restore and Synchronise PVC storage - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: VolSyncEntry - label: VolSync Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: "Name of backup configuration" - schema: - type: string - default: "" - required: true - - variable: type - label: Type VolSync/Backup - description: Sets the VolSync Type - schema: - type: string - default: "restic" - enum: - - value: restic - description: Restic - - variable: credentials - label: Credentials - description: "Name of credentials in the credentials section" - schema: - type: string - default: "" - required: true - - variable: dest - label: VolSync Destination (Restore) - description: VolSYnc Destination is the location where data is the reciever and configures recovery of backups - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: src - label: VolSync Source (Backup) - description: VolSYnc Source is the location where data is the sender and creates backups to storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable - schema: - type: boolean - default: true - - variable: static - label: 'Static Fixed PVC Bindings (Experimental)' - description: Link a PVC to a specific storage location - schema: - show_if: [["type", "=", "pvc"]] - type: dict - additional_attrs: true - attrs: - - variable: mode - label: mode - description: | - disabled: use normal dynamic PVCs - smb: connect to an SMB share - nfs: connect to an NFS share - schema: - type: string - default: "disabled" - enum: - - value: "disabled" - description: disabled - - value: smb - description: smb - - value: nfs - description: nfs - - variable: server - label: Server - description: server to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "myserver" - - variable: share - label: Share - description: share to connect to - schema: - type: string - show_if: [["mode", "!=", "disabled"]] - default: "/myshare" - - variable: user - label: User - description: connecting user - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "myuser" - - variable: domain - label: Domain - description: user domain - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: password - label: Password - description: connecting password - schema: - type: string - show_if: [["mode", "=", "smb"]] - default: "" - - variable: volumeSnapshots - label: 'Volume Snapshots (Experimental)' - description: Add an entry to the list to force creation of a volumeSnapshot of this PVC - schema: - show_if: [["type", "=", "pvc"]] - type: list - default: [] - items: - - variable: volumeSnapshotEntry - label: Custom volumeSnapshot - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' - schema: - type: string - default: "mysnapshot" - required: true - - variable: volumeSnapshotClassName - label: 'volumeSnapshot Class Name (Advanced)' - description: For use with PVCs using a non-default storageClass - schema: - type: string - default: "" - - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name (Optional) - description: Defaults to chart name - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description (Optional) - description: Defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: icon - label: Icon (Optional) - description: Defaults to chart icon - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - variable: widget - label: Widget Settings - schema: - type: dict - additional_attrs: true - show_if: [["enabled", "=", true]] - attrs: - - variable: enabled - label: Enable Widget - description: When disabled all widget annotations are skipped. - schema: - type: boolean - default: true - - variable: custom - label: Options - schema: - type: dict - additional_attrs: true - attrs: - - variable: key - label: API-key (key) - schema: - type: string - default: "" - - variable: customkv - label: Custom Options - schema: - type: list - default: [] - items: - - variable: option - label: Option - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - default: "" - required: true - - variable: value - label: Value - schema: - type: string - default: "" - required: true - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: overrideService - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - show_if: [["certificateIssuer", "=", ""]] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: Use Custom Secret (Advanced) - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: "Allow Cross Origin Requests" - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: namespace - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: homepage - label: Homepage - description: Connect ingress with Homepage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: name - label: Name - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: description - label: Description - description: defaults to chart description - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: group - label: Group - schema: - type: string - required: true - default: "default" - show_if: [["enabled", "=", true]] - - - variable: securityContext - group: SecurityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: container - label: Container - schema: - additional_attrs: true - type: dict - attrs: - # Settings from questions.yaml get appended here on a per-app basis - - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 568 - # Settings from questions.yaml get appended here on a per-app basis - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - show_if: [["runAsUser", "=", 0]] - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "0022" - - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - - variable: pod - label: Pod - schema: - additional_attrs: true - type: dict - attrs: - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - # Settings from questions.yaml get appended here on a per-app basis - - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: resources - group: Resources - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: 'gpu.intel.com/i915' - label: Add Intel i915 GPUs - schema: - type: int - default: 0 - - variable: 'nvidia.com/gpu' - label: Add NVIDIA GPUs (Experimental) - schema: - type: int - default: 0 - - variable: 'amd.com/gpu' - label: Add AMD GPUs - schema: - type: int - default: 0 - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: device - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - -# - variable: horizontalPodAutoscaler -# group: Experimental -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Experimental - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: ingress - label: "Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [{path: "/", pathType: "Prefix"}] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: integrations - label: Integrations - description: Connect ingress with other charts - schema: - additional_attrs: true - type: dict - attrs: - - variable: traefik - label: Traefik - description: Connect ingress with Traefik - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: true - - variable: allowCors - label: 'Allow Cross Origin Requests (advanced)' - schema: - type: boolean - default: false - show_if: [["enabled", "=", true]] - - variable: entrypoints - label: Entrypoints - schema: - type: list - default: ["websecure"] - show_if: [["enabled", "=", true]] - items: - - variable: entrypoint - label: Entrypoint - schema: - type: string - - variable: middlewares - label: Middlewares - schema: - type: list - default: [] - show_if: [["enabled", "=", true]] - items: - - variable: middleware - label: Middleware - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: name - schema: - type: string - default: "" - required: true - - variable: namespace - label: 'namespace (optional)' - schema: - type: string - default: "" - - variable: certManager - label: certManager - description: Connect ingress with certManager - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: enabled - schema: - type: boolean - default: false - - variable: certificateIssuer - label: certificateIssuer - description: defaults to chartname - schema: - type: string - default: "" - show_if: [["enabled", "=", true]] - - variable: advanced - label: Show Advanced Settings - description: Advanced settings are not covered by TrueCharts Support - schema: - type: boolean - default: false - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - show_if: [["advanced", "=", true]] - default: "" - - variable: tls - label: TLS-Settings - schema: - type: list - show_if: [["advanced", "=", true]] - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - - variable: certificateIssuer - label: Use Cert-Manager clusterIssuer - description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' - schema: - type: string - default: "" - - variable: clusterCertificate - label: 'Cluster Certificate (Advanced)' - description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' - schema: - type: string - show_if: [["certificateIssuer", "=", ""]] - default: "" - - variable: secretName - label: 'Use Custom Certificate Secret (Advanced)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: string - default: "" - - variable: scaleCert - label: 'Use TrueNAS SCALE Certificate (Deprecated)' - schema: - show_if: [["certificateIssuer", "=", ""]] - type: int - $ref: - - "definitions/certificate" - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: netshoot - label: Netshoot - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: envList - label: Netshoot Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: gluetun - description: Gluetun - - value: tailscale - description: Tailscale - - value: openvpn - description: OpenVPN (Deprecated) - - value: wireguard - description: Wireguard (Deprecated) - - variable: openvpn - label: OpenVPN Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - show_if: [["username", "!=", ""]] - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - additional_attrs: true - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: string - show_if: [["type", "!=", "disabled"]] - default: "" - - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - max_length: 10240 - - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
    https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
    https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true - diff --git a/stable/notifiarr/5.0.9/templates/common.yaml b/stable/notifiarr/5.0.9/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/stable/notifiarr/5.0.9/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/stable/notifiarr/5.0.9/values.yaml b/stable/notifiarr/5.0.9/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/notifiarr/app_versions.json b/stable/notifiarr/app_versions.json deleted file mode 100644 index cc6912330d8..00000000000 --- a/stable/notifiarr/app_versions.json +++ /dev/null @@ -1,30692 +0,0 @@ -{ - "5.0.10": { - "healthy": true, - "supported": true, - "healthy_error": null, - "location": "/home/runner/_work/catalog/catalog/stable/notifiarr/5.0.10", - "last_update": "2024-05-29 12:35:14", - "required_features": [ - "definitions/timezone", - "normalize/interfaceConfiguration", - "definitions/certificate", - "definitions/interface" - ], - "human_version": "0.7.1_5.0.10", - "version": "5.0.10", - "chart_metadata": { - "annotations": { - "truecharts.org/category": "MediaApp-Other", - "truecharts.org/max_helm_version": "3.14", - "truecharts.org/min_helm_version": "3.11", - "truecharts.org/train": "stable" - }, - "apiVersion": "v2", - "appVersion": "0.7.1", - "dependencies": [ - { - "name": "common", - "version": "23.0.10", - "repository": "oci://tccr.io/truecharts", - "condition": "", - "alias": "", - "tags": [], - "import-values": [] - } - ], - "deprecated": false, - "description": "This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.", - "home": "https://truecharts.org/charts/stable/notifiarr", - "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp", - "keywords": [ - "plex", - "discord", - "MediaApp-Other", - "notification" - ], - "kubeVersion": ">=1.24.0-0", - "maintainers": [ - { - "name": "TrueCharts", - "email": "info@truecharts.org", - "url": "https://truecharts.org" - } - ], - "name": "notifiarr", - "sources": [ - "https://github.com/Notifiarr/notifiarr", - "https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr", - "https://hub.docker.com/r/golift/notifiarr" - ], - "type": "application", - "version": "5.0.10" - }, - "app_metadata": null, - "schema": { - "groups": [ - { - "name": "Image", - "description": "Configured the images to be used for the Chart.\nIt's wise to use \"digest pinned\" tags and to avoid using \"latest\".\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/#images\n" - }, - { - "name": "General", - "description": "For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general.\n\nCheckout the following documentation for more information:\n - https://truecharts.org/common/global/\n - https://truecharts.org/common/#tz\n - https://truecharts.org/common/podoptions/\n - Image Pull Secrets\n" - }, - { - "name": "Workload", - "description": "These settings configure how the actual Pods and containers are running.\nGenerally, on SCALE, we only expose a limited subset of these settings for the primary workload and container.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/workload/\n- https://truecharts.org/common/container/\n" - }, - { - "name": "App Configuration", - "description": "Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application.\nMost options should have a Tooltip (Circled Question Mark) to further describe said option.\n\nTo find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/\n" - }, - { - "name": "Services", - "description": "Service and Networking options for any applications are contained here.\nSome applications may have complicated networking setups with multiple options or some may have no options here at all.\n\nOptions here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/service/\n" - }, - { - "name": "Networking", - "description": "Contains advanced networking options that are not actively supported by the TrueCharts team.\nCurrently only contains scaleExternalInterfaces.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/scaleexternalinterface/\n" - }, - { - "name": "Persistence", - "description": "Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types.\nThis storage is called Persistence since it is not deleted upon restart or upgrade of an application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/\n- https://truecharts.org/scale/guides/nfs-share/\n- https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath\n" - }, - { - "name": "Ingress", - "description": "Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names).\nIf you choose to enable this you must have a \"Ingress Provider\" aka \"Reverse Proxy\" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/)\nIt also requiresa DNS service to actually resolve the DNS name of the FQDN specified.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/ingress/\n" - }, - { - "name": "SecurityContext", - "description": "The security settings for each application and/or permissions that each application may have for the files/directories created.\nEach application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities.\n\nUnless necessary users are advised to keep this section mostly to defaults.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/securitycontext/\n" - }, - { - "name": "Resources", - "description": "Resources limits that have been defined by each application are in this section.\nMost will have a specific default that some users may want to change based on their specific hardware or needs.\n\nThis also contains the options to mount GPUs or, more precisely, \"request\" GPU's to be mounted.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/resources/\n" - }, - { - "name": "Devices", - "description": "These are special \"mountpoints\" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts.\nFor clearity we've decided to seperate this from persistence on SCALE.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/device/\n- https://truecharts.org/scale/guides/pci-passthrough/\n" - }, - { - "name": "Middlewares", - "description": "Traefik Middlewares" - }, - { - "name": "StorageClass", - "description": "StorageClasses define where to storage Storage.\n\nCheckout the following documentation for more information:\n" - }, - { - "name": "Metrics", - "description": "Contains options to configure Prometheus metrics for the application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/metrics/\n" - }, - { - "name": "Addons", - "description": "Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application\u2019s defaults.\nThings included here are VPN addons, Codeserver for editing files inside the application\u2019s container, Netshoot for network troubelshooting, etc.\n\nGenerally not required for use but may be necessary or usefull at times for specific applications.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/addons/\n- https://truecharts.org/scale/guides/vpn-setup/\n" - }, - { - "name": "Experimental", - "description": "Experimental Configuration Options\nOften these are not fully flushed-out, could randomly break or might not work at-all.\n" - }, - { - "name": "Postgresql", - "description": "For Postgresql we use \"CloudNative-PG\" as a backend, which has to be installed first.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/cnpg/\n- https://truecharts.org/scale/guides/sql-export/\n- https://truecharts.org/scale/guides/recover-cnpg/\n" - }, - { - "name": "Dependencies", - "description": "contains dependency setting for which we, currently, do not have seperate catagories (yet)\n" - }, - { - "name": "Documentation", - "description": "We added this section to make everyone aware that OpenSource isn't always easy.\nIt doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects.\n\nBefore installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/\nWe would also advice going over our https://truecharts.org/scale/guides/scale-intro/\nand many of the other documentation pages...\n" - } - ], - "portals": { - "open": { - "protocols": [ - "$kubernetes-resource_configmap_tcportal-open_protocol" - ], - "host": [ - "$kubernetes-resource_configmap_tcportal-open_host" - ], - "ports": [ - "$kubernetes-resource_configmap_tcportal-open_port" - ] - } - }, - "questions": [ - { - "variable": "global", - "group": "General", - "label": "Global Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "stopAll", - "label": "Stop All", - "description": "Stops All Running pods and hibernates cnpg", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - }, - { - "variable": "credentialsList", - "group": "General", - "label": "Credentials (Experimental)", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "credentialsEntry", - "label": "Enter Credentials", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "type", - "label": "Type", - "description": "Type of Credential", - "schema": { - "type": "string", - "default": "s3", - "enum": [ - { - "value": "s3", - "description": "s3 Storage" - } - ] - } - }, - { - "variable": "url", - "label": "url", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "path", - "label": "path", - "description": "Path Prefix not needed for most cases", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "bucket", - "label": "bucket", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "accessKey", - "label": "accessKey", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "secretKey", - "label": "secretKey", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "encrKey", - "label": "encrKey", - "description": "The Encryption key is needed for tools like volsync if not needed it will be ignored", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "MYSECRETPASSPHRASE", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "workload", - "group": "Workload", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type (Advanced)", - "schema": { - "type": "string", - "default": "Deployment", - "enum": [ - { - "value": "Deployment", - "description": "Deployment" - }, - { - "value": "DaemonSet", - "description": "DaemonSet" - } - ] - } - }, - { - "variable": "replicas", - "label": "Replicas (Advanced)", - "description": "Set the number of Replicas", - "schema": { - "type": "int", - "show_if": [ - [ - "type", - "!=", - "DaemonSet" - ] - ], - "default": 1 - } - }, - { - "variable": "podSpec", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "containers", - "label": "Containers", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "envList", - "label": "Extra Environment Variables", - "description": "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting...", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string" - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "extraArgs", - "label": "Extra Args", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "arg", - "label": "Arg", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "command", - "label": "Command", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "param", - "label": "Param", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "notifiarr", - "group": "App Configuration", - "label": "Image Environment", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "apikey", - "label": "Notifiarr All API Key", - "description": "Notifiarr All Integrations API key from https://notifiarr.com
    \nNOTE: Use 'admin' as username and your API key as the password
    \nfor your first-time login credentials.
    \nAfter login you must change your password from the UI.\n", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "upstreams", - "label": "Upstreams", - "description": "Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled.", - "schema": { - "type": "list", - "default": [ - "172.16.0.0/16" - ], - "items": [ - { - "variable": "upstreamEntry", - "label": "Upstream", - "description": "Upstream IP or CIDR", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "TZ", - "label": "Timezone", - "group": "General", - "schema": { - "type": "string", - "default": "America/Los_Angeles", - "$ref": [ - "definitions/timezone" - ], - "enum": [ - { - "value": "Asia/Damascus", - "description": "'Asia/Damascus' timezone" - }, - { - "value": "Asia/Saigon", - "description": "'Asia/Saigon' timezone" - } - ] - } - }, - { - "variable": "podOptions", - "group": "General", - "label": "Global Pod Options (Advanced)", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "expertPodOpts", - "label": "Expert - Pod Options", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hostNetwork", - "label": "Host Networking", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "dnsConfig", - "label": "DNS Configuration", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "options", - "label": "Options", - "schema": { - "type": "list", - "default": [ - { - "name": "ndots", - "value": "1" - } - ], - "items": [ - { - "variable": "optionsEntry", - "label": "Option Entry", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "nameservers", - "label": "Nameservers", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "nsEntry", - "label": "Nameserver Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "searches", - "label": "Searches", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "searchEntry", - "label": "Search Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "imagePullSecretList", - "group": "General", - "label": "Image Pull Secrets", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pullsecretentry", - "label": "Pull Secret", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "data", - "label": "Data", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "registry", - "label": "Registry", - "schema": { - "type": "string", - "required": true, - "default": "https://index.docker.io/v1/" - } - }, - { - "variable": "username", - "label": "Username", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "schema": { - "type": "string", - "required": true, - "private": true, - "default": "" - } - }, - { - "variable": "email", - "label": "Email", - "schema": { - "type": "string", - "required": true, - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "service", - "group": "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)" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "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": 5454, - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "scaleExternalInterface", - "description": "Add External Interfaces (Experimental, might change or be removed without further notice)", - "label": "Add external Interfaces (Experimental)", - "group": "Networking", - "schema": { - "type": "list", - "items": [ - { - "variable": "interfaceConfiguration", - "description": "Interface Configuration", - "label": "Interface Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "normalize/interfaceConfiguration" - ], - "attrs": [ - { - "variable": "hostInterface", - "description": "Please Specify Host Interface", - "label": "Host Interface", - "schema": { - "type": "string", - "required": true, - "$ref": [ - "definitions/interface" - ], - "enum": [] - } - }, - { - "variable": "ipam", - "description": "Define how IP Address will be managed", - "label": "IP Address Management", - "schema": { - "additional_attrs": true, - "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" - } - ] - } - }, - { - "variable": "staticIPConfigurations", - "label": "Static IP Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "items": [ - { - "variable": "staticIP", - "label": "Static IP", - "schema": { - "type": "ipaddr", - "cidr": true - } - } - ] - } - }, - { - "variable": "staticRoutes", - "label": "Static Routes", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "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": "serviceList", - "label": "Add Manual Custom Services", - "group": "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": "Persistence", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "config", - "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": "pvc", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - }, - { - "value": "iscsi", - "description": "iSCSI Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size quotum of Storage (Do NOT REDUCE after installation)", - "description": "This value can ONLY be INCREASED after the installation", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "volsync", - "label": "VolSync (Experimental)", - "description": "Backup, Restore and Synchronise PVC storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "VolSyncEntry", - "label": "VolSync Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "Name of backup configuration", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "type", - "label": "Type VolSync/Backup", - "description": "Sets the VolSync Type", - "schema": { - "type": "string", - "default": "restic", - "enum": [ - { - "value": "restic", - "description": "Restic" - } - ] - } - }, - { - "variable": "credentials", - "label": "Credentials", - "description": "Name of credentials in the credentials section", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "dest", - "label": "VolSync Destination (Restore)", - "description": "VolSYnc Destination is the location where data is the reciever and configures recovery of backups", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "src", - "label": "VolSync Source (Backup)", - "description": "VolSYnc Source is the location where data is the sender and creates backups to storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "persistenceList", - "label": "Additional App Storage", - "group": "Persistence", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "persistenceListEntry", - "label": "Custom Storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the storage", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "type", - "label": "Type of Storage", - "description": "Sets the persistence type, Anything other than PVC could break rollback!", - "schema": { - "type": "string", - "default": "hostPath", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "mountPath", - "label": "Mount Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "type": "string", - "default": "", - "required": true, - "valid_chars": "^\\/([a-zA-Z0-9._-]+(\\s?[a-zA-Z0-9._-]+|\\/?))+$" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size Quotum of Storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "volsync", - "label": "VolSync (Experimental)", - "description": "Backup, Restore and Synchronise PVC storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "VolSyncEntry", - "label": "VolSync Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "Name of backup configuration", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "type", - "label": "Type VolSync/Backup", - "description": "Sets the VolSync Type", - "schema": { - "type": "string", - "default": "restic", - "enum": [ - { - "value": "restic", - "description": "Restic" - } - ] - } - }, - { - "variable": "credentials", - "label": "Credentials", - "description": "Name of credentials in the credentials section", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "dest", - "label": "VolSync Destination (Restore)", - "description": "VolSYnc Destination is the location where data is the reciever and configures recovery of backups", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "src", - "label": "VolSync Source (Backup)", - "description": "VolSYnc Source is the location where data is the sender and creates backups to storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "", - "group": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name (Optional)", - "description": "Defaults to chart name", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description (Optional)", - "description": "Defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "icon", - "label": "Icon (Optional)", - "description": "Defaults to chart icon", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "widget", - "label": "Widget Settings", - "schema": { - "type": "dict", - "additional_attrs": true, - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "attrs": [ - { - "variable": "enabled", - "label": "Enable Widget", - "description": "When disabled all widget annotations are skipped.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "custom", - "label": "Options", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "key", - "label": "API-key (key)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "customkv", - "label": "Custom Options", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "option", - "label": "Option", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingressList", - "label": "Add Manual Custom Ingresses", - "group": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressListEntry", - "label": "Custom Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "ingressClassName", - "label": "IngressClass Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - }, - { - "variable": "overrideService", - "label": "Linked Service", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Service Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "port", - "label": "Service Port", - "schema": { - "type": "int" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Secret (Advanced)", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description", - "description": "defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "securityContext", - "group": "SecurityContext", - "label": "Security Context", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "container", - "label": "Container", - "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": "PUID", - "label": "Process User ID - PUID", - "description": "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps", - "schema": { - "type": "int", - "show_if": [ - [ - "runAsUser", - "=", - 0 - ] - ], - "default": 568 - } - }, - { - "variable": "UMASK", - "label": "UMASK", - "description": "When supported by the container, this sets the UMASK for the App. Not supported by all Apps", - "schema": { - "type": "string", - "default": "0022" - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "privileged", - "label": "Privileged mode", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "readOnlyRootFilesystem", - "label": "ReadOnly Root Filesystem", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - }, - { - "variable": "pod", - "label": "Pod", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "fsGroupChangePolicy", - "label": "When should we take ownership?", - "schema": { - "type": "string", - "default": "OnRootMismatch", - "enum": [ - { - "value": "OnRootMismatch", - "description": "OnRootMismatch" - }, - { - "value": "Always", - "description": "Always" - } - ] - } - }, - { - "variable": "supplementalGroups", - "label": "Supplemental Groups", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "supplementalGroupsEntry", - "label": "Supplemental Group", - "schema": { - "type": "int" - } - } - ] - } - }, - { - "variable": "fsGroup", - "label": "fsGroup", - "description": "The group that should own ALL storage.", - "schema": { - "type": "int", - "default": 568 - } - } - ] - } - } - ] - } - }, - { - "variable": "resources", - "group": "Resources", - "label": "Resource Limits", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "limits", - "label": "Advanced Limit Resource Consumption", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "4000m", - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "8Gi", - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - }, - { - "variable": "gpu.intel.com/i915", - "label": "Add Intel i915 GPUs", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "nvidia.com/gpu", - "label": "Add NVIDIA GPUs (Experimental)", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "amd.com/gpu", - "label": "Add AMD GPUs", - "schema": { - "type": "int", - "default": 0 - } - } - ] - } - }, - { - "variable": "requests", - "label": "Minimum Resources Required (request)", - "schema": { - "additional_attrs": true, - "type": "dict", - "hidden": true, - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "10m", - "hidden": true, - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "50Mi", - "hidden": true, - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - } - ] - } - } - ] - } - }, - { - "variable": "deviceList", - "label": "Mount USB Devices", - "group": "Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "deviceListEntry", - "label": "Device", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the Storage", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "type", - "label": "(Advanced) Type of Storage", - "description": "Sets the persistence type", - "schema": { - "type": "string", - "default": "device", - "hidden": true - } - }, - { - "variable": "readOnly", - "label": "readOnly", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Device Path", - "description": "Path to the device on the host system", - "schema": { - "type": "path" - } - }, - { - "variable": "mountPath", - "label": "Container Device Path", - "description": "Path inside the container the device is mounted", - "schema": { - "type": "string", - "default": "/dev/ttyACM0" - } - } - ] - } - } - ] - } - }, - { - "variable": "networkPolicy", - "group": "Experimental", - "label": "(Advanced) Network Policy", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "netPolicyEntry", - "label": "Network Policy Entry", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "policyType", - "label": "Policy Type", - "schema": { - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "ingress", - "description": "Ingress" - }, - { - "value": "egress", - "description": "Egress" - }, - { - "value": "ingress-egress", - "description": "Ingress and Egress" - } - ] - } - }, - { - "variable": "egress", - "label": "Egress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "egressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "to", - "label": "To", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "toEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "from", - "label": "From", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "fromEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "addons", - "group": "Addons", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "Codeserver", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "service", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Service Type", - "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer", - "schema": { - "type": "string", - "default": "LoadBalancer", - "enum": [ - { - "value": "NodePort", - "description": "Deprecated CHANGE THIS" - }, - { - "value": "ClusterIP", - "description": "ClusterIP" - }, - { - "value": "LoadBalancer", - "description": "LoadBalancer" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int", - "default": 36107 - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "scaleCert", - "label": "Use TrueNAS SCALE Certificate (Deprecated)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "int", - "$ref": [ - "definitions/certificate" - ], - "enum": [ - { - "value": null, - "description": "No Certificate" - } - ], - "default": null, - "null": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "envList", - "label": "Codeserver Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "netshoot", - "label": "Netshoot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "envList", - "label": "Netshoot Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "vpn", - "label": "VPN", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "gluetun", - "description": "Gluetun" - }, - { - "value": "tailscale", - "description": "Tailscale" - }, - { - "value": "openvpn", - "description": "OpenVPN (Deprecated)" - }, - { - "value": "wireguard", - "description": "Wireguard (Deprecated)" - } - ] - } - }, - { - "variable": "openvpn", - "label": "OpenVPN Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "openvpn" - ] - ], - "attrs": [ - { - "variable": "username", - "label": "Authentication Username (Optional)", - "description": "Authentication Username, Optional", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "Authentication Password", - "description": "Authentication Credentials", - "schema": { - "type": "string", - "show_if": [ - [ - "username", - "!=", - "" - ] - ], - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "tailscale", - "label": "Tailscale Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "tailscale" - ] - ], - "attrs": [ - { - "variable": "authkey", - "label": "Authentication Key", - "description": "Provide an auth key to automatically authenticate the node as your user account.", - "schema": { - "type": "string", - "private": true, - "default": "" - } - }, - { - "variable": "auth_once", - "label": "Auth Once", - "description": "Only attempt to log in if not already logged in.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "accept_dns", - "label": "Accept DNS", - "description": "Accept DNS configuration from the admin console.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "userspace", - "label": "Userspace", - "description": "Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "routes", - "label": "Routes", - "description": "Expose physical subnet routes to your entire Tailscale network.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "dest_ip", - "label": "Destination IP", - "description": "Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "sock5_server", - "label": "Sock5 Server", - "description": "The address on which to listen for SOCKS5 proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "outbound_http_proxy_listen", - "label": "Outbound HTTP Proxy Listen", - "description": "The address on which to listen for HTTP proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "extra_args", - "label": "Extra Args", - "description": "Extra Args", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "daemon_extra_args", - "label": "Tailscale Daemon Extra Args", - "description": "Tailscale Daemon Extra Args", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "killSwitch", - "label": "Enable Killswitch", - "schema": { - "type": "boolean", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": true - } - }, - { - "variable": "excludedNetworks_IPv4", - "label": "Killswitch Excluded IPv4 networks", - "description": "List of Killswitch Excluded IPv4 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv4", - "label": "IPv4 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "excludedNetworks_IPv6", - "label": "Killswitch Excluded IPv6 networks", - "description": "List of Killswitch Excluded IPv6 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv6", - "label": "IPv6 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "configFile", - "label": "VPN Config File Location", - "schema": { - "type": "string", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": "" - } - }, - { - "variable": "envList", - "label": "VPN Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true, - "max_length": 10240 - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "docs", - "group": "Documentation", - "label": "Please read the documentation at https://truecharts.org", - "description": "Please read the documentation at
    https://truecharts.org", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDocs", - "label": "I have checked the documentation", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "donateNag", - "group": "Documentation", - "label": "Please consider supporting TrueCharts, see https://truecharts.org/sponsor", - "description": "Please consider supporting TrueCharts, see
    https://truecharts.org/sponsor", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDonate", - "label": "I have considered donating", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - } - ] - } - } - ] - }, - "app_readme": "

    This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.

    \n

    This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/notifiarr

    \n
    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    ", - "detailed_readme": "
    \n

    title: README

    \n

    General Info

    \n

    TrueCharts can be installed as both normal Helm Charts or as TrueNAS SCALE Apps.\nBoth solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible

    \n

    For more information about this Chart, please check the docs on the TrueCharts website

    \n

    This chart is not maintained by the upstream project and any issues with the chart should be raised here

    \n

    Installation

    \n

    Helm-Chart installation

    \n

    To install TrueCharts Helm charts using Helm, you can use our OCI Repository.

    \n

    helm install mychart oci://tccr.io/truecharts/CHARTNAME

    \n

    For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/

    \n

    TrueNAS SCALE Apps

    \n

    For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the quick-start guides for TrueNAS SCALE.

    \n

    Chart Specific Guides and information

    \n

    All our charts have dedicated documentation pages.\nThe documentation for this chart can be found here:\nhttps://truecharts.org/charts/stable/notifiarr

    \n

    Configuration Options

    \n

    Please note: For TrueNAS SCALE, only options available in the GUI are supported.\nHence most of these docs do not apply to TrueNAS SCALE

    \n

    To view the chart specific options, please view Values.yaml included in the chart.\nThe most recent version of which, is available here: https://github.com/truecharts/charts/charts/stable/notifiarr/values.yaml

    \n

    All our Charts use a shared \"common\" library chart that contains most of the templating and options.\nFor the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/

    \n

    For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml

    \n

    Support

    \n\n
    \n

    Sponsor TrueCharts

    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    \n

    All Rights Reserved - The TrueCharts Project

    ", - "changelog": "

    for the complete changelog, please refer to the website

    \n

    Important:

    " - }, - "5.0.9": { - "healthy": true, - "supported": true, - "healthy_error": null, - "location": "/home/runner/_work/catalog/catalog/stable/notifiarr/5.0.9", - "last_update": "2024-05-29 12:35:14", - "required_features": [ - "definitions/timezone", - "normalize/interfaceConfiguration", - "definitions/certificate", - "definitions/interface" - ], - "human_version": "0.7.1_5.0.9", - "version": "5.0.9", - "chart_metadata": { - "annotations": { - "truecharts.org/category": "MediaApp-Other", - "truecharts.org/max_helm_version": "3.14", - "truecharts.org/min_helm_version": "3.11", - "truecharts.org/train": "stable" - }, - "apiVersion": "v2", - "appVersion": "0.7.1", - "dependencies": [ - { - "name": "common", - "version": "23.0.9", - "repository": "oci://tccr.io/truecharts", - "condition": "", - "alias": "", - "tags": [], - "import-values": [] - } - ], - "deprecated": false, - "description": "This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.", - "home": "https://truecharts.org/charts/stable/notifiarr", - "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp", - "keywords": [ - "plex", - "discord", - "MediaApp-Other", - "notification" - ], - "kubeVersion": ">=1.24.0-0", - "maintainers": [ - { - "name": "TrueCharts", - "email": "info@truecharts.org", - "url": "https://truecharts.org" - } - ], - "name": "notifiarr", - "sources": [ - "https://github.com/Notifiarr/notifiarr", - "https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr", - "https://hub.docker.com/r/golift/notifiarr" - ], - "type": "application", - "version": "5.0.9" - }, - "app_metadata": null, - "schema": { - "groups": [ - { - "name": "Image", - "description": "Configured the images to be used for the Chart.\nIt's wise to use \"digest pinned\" tags and to avoid using \"latest\".\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/#images\n" - }, - { - "name": "General", - "description": "For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general.\n\nCheckout the following documentation for more information:\n - https://truecharts.org/common/global/\n - https://truecharts.org/common/#tz\n - https://truecharts.org/common/podoptions/\n - Image Pull Secrets\n" - }, - { - "name": "Workload", - "description": "These settings configure how the actual Pods and containers are running.\nGenerally, on SCALE, we only expose a limited subset of these settings for the primary workload and container.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/workload/\n- https://truecharts.org/common/container/\n" - }, - { - "name": "App Configuration", - "description": "Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application.\nMost options should have a Tooltip (Circled Question Mark) to further describe said option.\n\nTo find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/\n" - }, - { - "name": "Services", - "description": "Service and Networking options for any applications are contained here.\nSome applications may have complicated networking setups with multiple options or some may have no options here at all.\n\nOptions here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/service/\n" - }, - { - "name": "Networking", - "description": "Contains advanced networking options that are not actively supported by the TrueCharts team.\nCurrently only contains scaleExternalInterfaces.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/scaleexternalinterface/\n" - }, - { - "name": "Persistence", - "description": "Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types.\nThis storage is called Persistence since it is not deleted upon restart or upgrade of an application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/\n- https://truecharts.org/scale/guides/nfs-share/\n- https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath\n" - }, - { - "name": "Ingress", - "description": "Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names).\nIf you choose to enable this you must have a \"Ingress Provider\" aka \"Reverse Proxy\" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/)\nIt also requiresa DNS service to actually resolve the DNS name of the FQDN specified.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/ingress/\n" - }, - { - "name": "SecurityContext", - "description": "The security settings for each application and/or permissions that each application may have for the files/directories created.\nEach application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities.\n\nUnless necessary users are advised to keep this section mostly to defaults.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/securitycontext/\n" - }, - { - "name": "Resources", - "description": "Resources limits that have been defined by each application are in this section.\nMost will have a specific default that some users may want to change based on their specific hardware or needs.\n\nThis also contains the options to mount GPUs or, more precisely, \"request\" GPU's to be mounted.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/resources/\n" - }, - { - "name": "Devices", - "description": "These are special \"mountpoints\" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts.\nFor clearity we've decided to seperate this from persistence on SCALE.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/device/\n- https://truecharts.org/scale/guides/pci-passthrough/\n" - }, - { - "name": "Middlewares", - "description": "Traefik Middlewares" - }, - { - "name": "StorageClass", - "description": "StorageClasses define where to storage Storage.\n\nCheckout the following documentation for more information:\n" - }, - { - "name": "Metrics", - "description": "Contains options to configure Prometheus metrics for the application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/metrics/\n" - }, - { - "name": "Addons", - "description": "Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application\u2019s defaults.\nThings included here are VPN addons, Codeserver for editing files inside the application\u2019s container, Netshoot for network troubelshooting, etc.\n\nGenerally not required for use but may be necessary or usefull at times for specific applications.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/addons/\n- https://truecharts.org/scale/guides/vpn-setup/\n" - }, - { - "name": "Experimental", - "description": "Experimental Configuration Options\nOften these are not fully flushed-out, could randomly break or might not work at-all.\n" - }, - { - "name": "Postgresql", - "description": "For Postgresql we use \"CloudNative-PG\" as a backend, which has to be installed first.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/cnpg/\n- https://truecharts.org/scale/guides/sql-export/\n- https://truecharts.org/scale/guides/recover-cnpg/\n" - }, - { - "name": "Dependencies", - "description": "contains dependency setting for which we, currently, do not have seperate catagories (yet)\n" - }, - { - "name": "Documentation", - "description": "We added this section to make everyone aware that OpenSource isn't always easy.\nIt doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects.\n\nBefore installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/\nWe would also advice going over our https://truecharts.org/scale/guides/scale-intro/\nand many of the other documentation pages...\n" - } - ], - "portals": { - "open": { - "protocols": [ - "$kubernetes-resource_configmap_tcportal-open_protocol" - ], - "host": [ - "$kubernetes-resource_configmap_tcportal-open_host" - ], - "ports": [ - "$kubernetes-resource_configmap_tcportal-open_port" - ] - } - }, - "questions": [ - { - "variable": "global", - "group": "General", - "label": "Global Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "stopAll", - "label": "Stop All", - "description": "Stops All Running pods and hibernates cnpg", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - }, - { - "variable": "credentialsList", - "group": "General", - "label": "Credentials (Experimental)", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "credentialsEntry", - "label": "Enter Credentials", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "type", - "label": "Type", - "description": "Type of Credential", - "schema": { - "type": "string", - "default": "s3", - "enum": [ - { - "value": "s3", - "description": "s3 Storage" - } - ] - } - }, - { - "variable": "url", - "label": "url", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "path", - "label": "path", - "description": "Path Prefix not needed for most cases", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "bucket", - "label": "bucket", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "accessKey", - "label": "accessKey", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "secretKey", - "label": "secretKey", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "encrKey", - "label": "encrKey", - "description": "The Encryption key is needed for tools like volsync if not needed it will be ignored", - "schema": { - "show_if": [ - [ - "type", - "=", - "s3" - ] - ], - "type": "string", - "default": "MYSECRETPASSPHRASE", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "workload", - "group": "Workload", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type (Advanced)", - "schema": { - "type": "string", - "default": "Deployment", - "enum": [ - { - "value": "Deployment", - "description": "Deployment" - }, - { - "value": "DaemonSet", - "description": "DaemonSet" - } - ] - } - }, - { - "variable": "replicas", - "label": "Replicas (Advanced)", - "description": "Set the number of Replicas", - "schema": { - "type": "int", - "show_if": [ - [ - "type", - "!=", - "DaemonSet" - ] - ], - "default": 1 - } - }, - { - "variable": "podSpec", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "containers", - "label": "Containers", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "envList", - "label": "Extra Environment Variables", - "description": "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting...", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string" - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "extraArgs", - "label": "Extra Args", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "arg", - "label": "Arg", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "command", - "label": "Command", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "param", - "label": "Param", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "notifiarr", - "group": "App Configuration", - "label": "Image Environment", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "apikey", - "label": "Notifiarr All API Key", - "description": "Notifiarr All Integrations API key from https://notifiarr.com
    \nNOTE: Use 'admin' as username and your API key as the password
    \nfor your first-time login credentials.
    \nAfter login you must change your password from the UI.\n", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "upstreams", - "label": "Upstreams", - "description": "Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled.", - "schema": { - "type": "list", - "default": [ - "172.16.0.0/16" - ], - "items": [ - { - "variable": "upstreamEntry", - "label": "Upstream", - "description": "Upstream IP or CIDR", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "TZ", - "label": "Timezone", - "group": "General", - "schema": { - "type": "string", - "default": "America/Los_Angeles", - "$ref": [ - "definitions/timezone" - ], - "enum": [ - { - "value": "Asia/Damascus", - "description": "'Asia/Damascus' timezone" - }, - { - "value": "Asia/Saigon", - "description": "'Asia/Saigon' timezone" - } - ] - } - }, - { - "variable": "podOptions", - "group": "General", - "label": "Global Pod Options (Advanced)", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "expertPodOpts", - "label": "Expert - Pod Options", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hostNetwork", - "label": "Host Networking", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "dnsConfig", - "label": "DNS Configuration", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "options", - "label": "Options", - "schema": { - "type": "list", - "default": [ - { - "name": "ndots", - "value": "1" - } - ], - "items": [ - { - "variable": "optionsEntry", - "label": "Option Entry", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "nameservers", - "label": "Nameservers", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "nsEntry", - "label": "Nameserver Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "searches", - "label": "Searches", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "searchEntry", - "label": "Search Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "imagePullSecretList", - "group": "General", - "label": "Image Pull Secrets", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pullsecretentry", - "label": "Pull Secret", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "data", - "label": "Data", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "registry", - "label": "Registry", - "schema": { - "type": "string", - "required": true, - "default": "https://index.docker.io/v1/" - } - }, - { - "variable": "username", - "label": "Username", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "schema": { - "type": "string", - "required": true, - "private": true, - "default": "" - } - }, - { - "variable": "email", - "label": "Email", - "schema": { - "type": "string", - "required": true, - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "service", - "group": "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)" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "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": 5454, - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "scaleExternalInterface", - "description": "Add External Interfaces (Experimental, might change or be removed without further notice)", - "label": "Add external Interfaces (Experimental)", - "group": "Networking", - "schema": { - "type": "list", - "items": [ - { - "variable": "interfaceConfiguration", - "description": "Interface Configuration", - "label": "Interface Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "normalize/interfaceConfiguration" - ], - "attrs": [ - { - "variable": "hostInterface", - "description": "Please Specify Host Interface", - "label": "Host Interface", - "schema": { - "type": "string", - "required": true, - "$ref": [ - "definitions/interface" - ], - "enum": [] - } - }, - { - "variable": "ipam", - "description": "Define how IP Address will be managed", - "label": "IP Address Management", - "schema": { - "additional_attrs": true, - "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" - } - ] - } - }, - { - "variable": "staticIPConfigurations", - "label": "Static IP Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "items": [ - { - "variable": "staticIP", - "label": "Static IP", - "schema": { - "type": "ipaddr", - "cidr": true - } - } - ] - } - }, - { - "variable": "staticRoutes", - "label": "Static Routes", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "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": "serviceList", - "label": "Add Manual Custom Services", - "group": "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": "Persistence", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "config", - "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": "pvc", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - }, - { - "value": "iscsi", - "description": "iSCSI Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size quotum of Storage (Do NOT REDUCE after installation)", - "description": "This value can ONLY be INCREASED after the installation", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "volsync", - "label": "VolSync (Experimental)", - "description": "Backup, Restore and Synchronise PVC storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "VolSyncEntry", - "label": "VolSync Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "Name of backup configuration", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "type", - "label": "Type VolSync/Backup", - "description": "Sets the VolSync Type", - "schema": { - "type": "string", - "default": "restic", - "enum": [ - { - "value": "restic", - "description": "Restic" - } - ] - } - }, - { - "variable": "credentials", - "label": "Credentials", - "description": "Name of credentials in the credentials section", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "dest", - "label": "VolSync Destination (Restore)", - "description": "VolSYnc Destination is the location where data is the reciever and configures recovery of backups", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "src", - "label": "VolSync Source (Backup)", - "description": "VolSYnc Source is the location where data is the sender and creates backups to storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "persistenceList", - "label": "Additional App Storage", - "group": "Persistence", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "persistenceListEntry", - "label": "Custom Storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the storage", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "type", - "label": "Type of Storage", - "description": "Sets the persistence type, Anything other than PVC could break rollback!", - "schema": { - "type": "string", - "default": "hostPath", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "mountPath", - "label": "Mount Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "type": "string", - "default": "", - "required": true, - "valid_chars": "^\\/([a-zA-Z0-9._-]+(\\s?[a-zA-Z0-9._-]+|\\/?))+$" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size Quotum of Storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "volsync", - "label": "VolSync (Experimental)", - "description": "Backup, Restore and Synchronise PVC storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "VolSyncEntry", - "label": "VolSync Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "Name of backup configuration", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "type", - "label": "Type VolSync/Backup", - "description": "Sets the VolSync Type", - "schema": { - "type": "string", - "default": "restic", - "enum": [ - { - "value": "restic", - "description": "Restic" - } - ] - } - }, - { - "variable": "credentials", - "label": "Credentials", - "description": "Name of credentials in the credentials section", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "dest", - "label": "VolSync Destination (Restore)", - "description": "VolSYnc Destination is the location where data is the reciever and configures recovery of backups", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "src", - "label": "VolSync Source (Backup)", - "description": "VolSYnc Source is the location where data is the sender and creates backups to storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "", - "group": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name (Optional)", - "description": "Defaults to chart name", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description (Optional)", - "description": "Defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "icon", - "label": "Icon (Optional)", - "description": "Defaults to chart icon", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "widget", - "label": "Widget Settings", - "schema": { - "type": "dict", - "additional_attrs": true, - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "attrs": [ - { - "variable": "enabled", - "label": "Enable Widget", - "description": "When disabled all widget annotations are skipped.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "custom", - "label": "Options", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "key", - "label": "API-key (key)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "customkv", - "label": "Custom Options", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "option", - "label": "Option", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingressList", - "label": "Add Manual Custom Ingresses", - "group": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressListEntry", - "label": "Custom Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "ingressClassName", - "label": "IngressClass Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - }, - { - "variable": "overrideService", - "label": "Linked Service", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Service Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "port", - "label": "Service Port", - "schema": { - "type": "int" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Secret (Advanced)", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description", - "description": "defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "securityContext", - "group": "SecurityContext", - "label": "Security Context", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "container", - "label": "Container", - "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": "PUID", - "label": "Process User ID - PUID", - "description": "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps", - "schema": { - "type": "int", - "show_if": [ - [ - "runAsUser", - "=", - 0 - ] - ], - "default": 568 - } - }, - { - "variable": "UMASK", - "label": "UMASK", - "description": "When supported by the container, this sets the UMASK for the App. Not supported by all Apps", - "schema": { - "type": "string", - "default": "0022" - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "privileged", - "label": "Privileged mode", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "readOnlyRootFilesystem", - "label": "ReadOnly Root Filesystem", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - }, - { - "variable": "pod", - "label": "Pod", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "fsGroupChangePolicy", - "label": "When should we take ownership?", - "schema": { - "type": "string", - "default": "OnRootMismatch", - "enum": [ - { - "value": "OnRootMismatch", - "description": "OnRootMismatch" - }, - { - "value": "Always", - "description": "Always" - } - ] - } - }, - { - "variable": "supplementalGroups", - "label": "Supplemental Groups", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "supplementalGroupsEntry", - "label": "Supplemental Group", - "schema": { - "type": "int" - } - } - ] - } - }, - { - "variable": "fsGroup", - "label": "fsGroup", - "description": "The group that should own ALL storage.", - "schema": { - "type": "int", - "default": 568 - } - } - ] - } - } - ] - } - }, - { - "variable": "resources", - "group": "Resources", - "label": "Resource Limits", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "limits", - "label": "Advanced Limit Resource Consumption", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "4000m", - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "8Gi", - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - }, - { - "variable": "gpu.intel.com/i915", - "label": "Add Intel i915 GPUs", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "nvidia.com/gpu", - "label": "Add NVIDIA GPUs (Experimental)", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "amd.com/gpu", - "label": "Add AMD GPUs", - "schema": { - "type": "int", - "default": 0 - } - } - ] - } - }, - { - "variable": "requests", - "label": "Minimum Resources Required (request)", - "schema": { - "additional_attrs": true, - "type": "dict", - "hidden": true, - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "10m", - "hidden": true, - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "50Mi", - "hidden": true, - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - } - ] - } - } - ] - } - }, - { - "variable": "deviceList", - "label": "Mount USB Devices", - "group": "Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "deviceListEntry", - "label": "Device", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the Storage", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "type", - "label": "(Advanced) Type of Storage", - "description": "Sets the persistence type", - "schema": { - "type": "string", - "default": "device", - "hidden": true - } - }, - { - "variable": "readOnly", - "label": "readOnly", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Device Path", - "description": "Path to the device on the host system", - "schema": { - "type": "path" - } - }, - { - "variable": "mountPath", - "label": "Container Device Path", - "description": "Path inside the container the device is mounted", - "schema": { - "type": "string", - "default": "/dev/ttyACM0" - } - } - ] - } - } - ] - } - }, - { - "variable": "networkPolicy", - "group": "Experimental", - "label": "(Advanced) Network Policy", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "netPolicyEntry", - "label": "Network Policy Entry", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "policyType", - "label": "Policy Type", - "schema": { - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "ingress", - "description": "Ingress" - }, - { - "value": "egress", - "description": "Egress" - }, - { - "value": "ingress-egress", - "description": "Ingress and Egress" - } - ] - } - }, - { - "variable": "egress", - "label": "Egress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "egressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "to", - "label": "To", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "toEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "from", - "label": "From", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "fromEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "addons", - "group": "Addons", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "Codeserver", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "service", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Service Type", - "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer", - "schema": { - "type": "string", - "default": "LoadBalancer", - "enum": [ - { - "value": "NodePort", - "description": "Deprecated CHANGE THIS" - }, - { - "value": "ClusterIP", - "description": "ClusterIP" - }, - { - "value": "LoadBalancer", - "description": "LoadBalancer" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int", - "default": 36107 - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "scaleCert", - "label": "Use TrueNAS SCALE Certificate (Deprecated)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "int", - "$ref": [ - "definitions/certificate" - ], - "enum": [ - { - "value": null, - "description": "No Certificate" - } - ], - "default": null, - "null": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "envList", - "label": "Codeserver Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "netshoot", - "label": "Netshoot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "envList", - "label": "Netshoot Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "vpn", - "label": "VPN", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "gluetun", - "description": "Gluetun" - }, - { - "value": "tailscale", - "description": "Tailscale" - }, - { - "value": "openvpn", - "description": "OpenVPN (Deprecated)" - }, - { - "value": "wireguard", - "description": "Wireguard (Deprecated)" - } - ] - } - }, - { - "variable": "openvpn", - "label": "OpenVPN Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "openvpn" - ] - ], - "attrs": [ - { - "variable": "username", - "label": "Authentication Username (Optional)", - "description": "Authentication Username, Optional", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "Authentication Password", - "description": "Authentication Credentials", - "schema": { - "type": "string", - "show_if": [ - [ - "username", - "!=", - "" - ] - ], - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "tailscale", - "label": "Tailscale Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "tailscale" - ] - ], - "attrs": [ - { - "variable": "authkey", - "label": "Authentication Key", - "description": "Provide an auth key to automatically authenticate the node as your user account.", - "schema": { - "type": "string", - "private": true, - "default": "" - } - }, - { - "variable": "auth_once", - "label": "Auth Once", - "description": "Only attempt to log in if not already logged in.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "accept_dns", - "label": "Accept DNS", - "description": "Accept DNS configuration from the admin console.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "userspace", - "label": "Userspace", - "description": "Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "routes", - "label": "Routes", - "description": "Expose physical subnet routes to your entire Tailscale network.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "dest_ip", - "label": "Destination IP", - "description": "Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "sock5_server", - "label": "Sock5 Server", - "description": "The address on which to listen for SOCKS5 proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "outbound_http_proxy_listen", - "label": "Outbound HTTP Proxy Listen", - "description": "The address on which to listen for HTTP proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "extra_args", - "label": "Extra Args", - "description": "Extra Args", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "daemon_extra_args", - "label": "Tailscale Daemon Extra Args", - "description": "Tailscale Daemon Extra Args", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "killSwitch", - "label": "Enable Killswitch", - "schema": { - "type": "boolean", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": true - } - }, - { - "variable": "excludedNetworks_IPv4", - "label": "Killswitch Excluded IPv4 networks", - "description": "List of Killswitch Excluded IPv4 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv4", - "label": "IPv4 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "excludedNetworks_IPv6", - "label": "Killswitch Excluded IPv6 networks", - "description": "List of Killswitch Excluded IPv6 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv6", - "label": "IPv6 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "configFile", - "label": "VPN Config File Location", - "schema": { - "type": "string", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": "" - } - }, - { - "variable": "envList", - "label": "VPN Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true, - "max_length": 10240 - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "docs", - "group": "Documentation", - "label": "Please read the documentation at https://truecharts.org", - "description": "Please read the documentation at
    https://truecharts.org", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDocs", - "label": "I have checked the documentation", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "donateNag", - "group": "Documentation", - "label": "Please consider supporting TrueCharts, see https://truecharts.org/sponsor", - "description": "Please consider supporting TrueCharts, see
    https://truecharts.org/sponsor", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDonate", - "label": "I have considered donating", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - } - ] - } - } - ] - }, - "app_readme": "

    This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.

    \n

    This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/notifiarr

    \n
    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    ", - "detailed_readme": "
    \n

    title: README

    \n

    General Info

    \n

    TrueCharts can be installed as both normal Helm Charts or as TrueNAS SCALE Apps.\nBoth solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible

    \n

    For more information about this Chart, please check the docs on the TrueCharts website

    \n

    This chart is not maintained by the upstream project and any issues with the chart should be raised here

    \n

    Installation

    \n

    Helm-Chart installation

    \n

    To install TrueCharts Helm charts using Helm, you can use our OCI Repository.

    \n

    helm install mychart oci://tccr.io/truecharts/CHARTNAME

    \n

    For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/

    \n

    TrueNAS SCALE Apps

    \n

    For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the quick-start guides for TrueNAS SCALE.

    \n

    Chart Specific Guides and information

    \n

    All our charts have dedicated documentation pages.\nThe documentation for this chart can be found here:\nhttps://truecharts.org/charts/stable/notifiarr

    \n

    Configuration Options

    \n

    Please note: For TrueNAS SCALE, only options available in the GUI are supported.\nHence most of these docs do not apply to TrueNAS SCALE

    \n

    To view the chart specific options, please view Values.yaml included in the chart.\nThe most recent version of which, is available here: https://github.com/truecharts/charts/charts/stable/notifiarr/values.yaml

    \n

    All our Charts use a shared \"common\" library chart that contains most of the templating and options.\nFor the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/

    \n

    For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml

    \n

    Support

    \n\n
    \n

    Sponsor TrueCharts

    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    \n

    All Rights Reserved - The TrueCharts Project

    ", - "changelog": "

    for the complete changelog, please refer to the website

    \n

    Important:

    " - }, - "4.8.14": { - "healthy": true, - "supported": true, - "healthy_error": null, - "location": "/home/runner/_work/catalog/catalog/stable/notifiarr/4.8.14", - "last_update": "2024-05-29 12:35:14", - "required_features": [ - "definitions/timezone", - "normalize/interfaceConfiguration", - "definitions/certificate", - "definitions/interface" - ], - "human_version": "0.7.0_4.8.14", - "version": "4.8.14", - "chart_metadata": { - "annotations": { - "max_scale_version": "24.04.0", - "min_scale_version": "23.10.0", - "truecharts.org/category": "MediaApp-Other", - "truecharts.org/max_helm_version": "3.14", - "truecharts.org/min_helm_version": "3.11", - "truecharts.org/train": "stable" - }, - "apiVersion": "v2", - "appVersion": "0.7.0", - "dependencies": [ - { - "name": "common", - "version": "20.3.12", - "repository": "oci://tccr.io/truecharts", - "condition": "", - "alias": "", - "tags": [], - "import-values": [] - } - ], - "deprecated": false, - "description": "This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.", - "home": "https://truecharts.org/charts/stable/notifiarr", - "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp", - "keywords": [ - "plex", - "discord", - "MediaApp-Other", - "notification" - ], - "kubeVersion": ">=1.24.0-0", - "maintainers": [ - { - "name": "TrueCharts", - "email": "info@truecharts.org", - "url": "https://truecharts.org" - } - ], - "name": "notifiarr", - "sources": [ - "https://github.com/Notifiarr/notifiarr", - "https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr", - "https://hub.docker.com/r/golift/notifiarr" - ], - "type": "application", - "version": "4.8.14" - }, - "app_metadata": null, - "schema": { - "groups": [ - { - "name": "Image", - "description": "Configured the images to be used for the Chart.\nIt's wise to use \"digest pinned\" tags and to avoid using \"latest\".\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/#images\n" - }, - { - "name": "General", - "description": "For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general.\n\nCheckout the following documentation for more information:\n - https://truecharts.org/common/global/\n - https://truecharts.org/common/#tz\n - https://truecharts.org/common/podoptions/\n - Image Pull Secrets\n" - }, - { - "name": "Workload", - "description": "These settings configure how the actual Pods and containers are running.\nGenerally, on SCALE, we only expose a limited subset of these settings for the primary workload and container.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/workload/\n- https://truecharts.org/common/container/\n" - }, - { - "name": "App Configuration", - "description": "Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application.\nMost options should have a Tooltip (Circled Question Mark) to further describe said option.\n\nTo find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/\n" - }, - { - "name": "Services", - "description": "Service and Networking options for any applications are contained here.\nSome applications may have complicated networking setups with multiple options or some may have no options here at all.\n\nOptions here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/service/\n" - }, - { - "name": "Networking", - "description": "Contains advanced networking options that are not actively supported by the TrueCharts team.\nCurrently only contains scaleExternalInterfaces.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/scaleexternalinterface/\n" - }, - { - "name": "Persistence", - "description": "Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types.\nThis storage is called Persistence since it is not deleted upon restart or upgrade of an application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/\n- https://truecharts.org/scale/guides/nfs-share/\n- https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath\n" - }, - { - "name": "Ingress", - "description": "Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names).\nIf you choose to enable this you must have a \"Ingress Provider\" aka \"Reverse Proxy\" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/)\nIt also requiresa DNS service to actually resolve the DNS name of the FQDN specified.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/ingress/\n" - }, - { - "name": "SecurityContext", - "description": "The security settings for each application and/or permissions that each application may have for the files/directories created.\nEach application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities.\n\nUnless necessary users are advised to keep this section mostly to defaults.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/securitycontext/\n" - }, - { - "name": "Resources", - "description": "Resources limits that have been defined by each application are in this section.\nMost will have a specific default that some users may want to change based on their specific hardware or needs.\n\nThis also contains the options to mount GPUs or, more precisely, \"request\" GPU's to be mounted.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/resources/\n" - }, - { - "name": "Devices", - "description": "These are special \"mountpoints\" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts.\nFor clearity we've decided to seperate this from persistence on SCALE.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/device/\n- https://truecharts.org/scale/guides/pci-passthrough/\n" - }, - { - "name": "Middlewares", - "description": "Traefik Middlewares" - }, - { - "name": "StorageClass", - "description": "StorageClasses define where to storage Storage.\n\nCheckout the following documentation for more information:\n" - }, - { - "name": "Metrics", - "description": "Contains options to configure Prometheus metrics for the application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/metrics/\n" - }, - { - "name": "Addons", - "description": "Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application\u2019s defaults.\nThings included here are VPN addons, Codeserver for editing files inside the application\u2019s container, Netshoot for network troubelshooting, etc.\n\nGenerally not required for use but may be necessary or usefull at times for specific applications.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/addons/\n- https://truecharts.org/scale/guides/vpn-setup/\n" - }, - { - "name": "Experimental", - "description": "Experimental Configuration Options\nOften these are not fully flushed-out, could randomly break or might not work at-all.\n" - }, - { - "name": "Postgresql", - "description": "For Postgresql we use \"CloudNative-PG\" as a backend, which has to be installed first.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/cnpg/\n- https://truecharts.org/scale/guides/sql-export/\n- https://truecharts.org/scale/guides/recover-cnpg/\n" - }, - { - "name": "Dependencies", - "description": "contains dependency setting for which we, currently, do not have seperate catagories (yet)\n" - }, - { - "name": "Documentation", - "description": "We added this section to make everyone aware that OpenSource isn't always easy.\nIt doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects.\n\nBefore installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/\nWe would also advice going over our https://truecharts.org/scale/guides/scale-intro/\nand many of the other documentation pages...\n" - } - ], - "portals": { - "open": { - "protocols": [ - "$kubernetes-resource_configmap_tcportal-open_protocol" - ], - "host": [ - "$kubernetes-resource_configmap_tcportal-open_host" - ], - "ports": [ - "$kubernetes-resource_configmap_tcportal-open_port" - ] - } - }, - "questions": [ - { - "variable": "global", - "group": "General", - "label": "Global Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "stopAll", - "label": "Stop All", - "description": "Stops All Running pods and hibernates cnpg", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - }, - { - "variable": "workload", - "group": "Workload", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type (Advanced)", - "schema": { - "type": "string", - "default": "Deployment", - "enum": [ - { - "value": "Deployment", - "description": "Deployment" - }, - { - "value": "DaemonSet", - "description": "DaemonSet" - } - ] - } - }, - { - "variable": "replicas", - "label": "Replicas (Advanced)", - "description": "Set the number of Replicas", - "schema": { - "type": "int", - "show_if": [ - [ - "type", - "!=", - "DaemonSet" - ] - ], - "default": 1 - } - }, - { - "variable": "podSpec", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "containers", - "label": "Containers", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "envList", - "label": "Extra Environment Variables", - "description": "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting...", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string" - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "extraArgs", - "label": "Extra Args", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "arg", - "label": "Arg", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "command", - "label": "Command", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "param", - "label": "Param", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "notifiarr", - "group": "App Configuration", - "label": "Image Environment", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "apikey", - "label": "Notifiarr All API Key", - "description": "Notifiarr All Integrations API key from https://notifiarr.com
    \nNOTE: Use 'admin' as username and your API key as the password
    \nfor your first-time login credentials.
    \nAfter login you must change your password from the UI.\n", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "upstreams", - "label": "Upstreams", - "description": "Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled.", - "schema": { - "type": "list", - "default": [ - "172.16.0.0/16" - ], - "items": [ - { - "variable": "upstreamEntry", - "label": "Upstream", - "description": "Upstream IP or CIDR", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "TZ", - "label": "Timezone", - "group": "General", - "schema": { - "type": "string", - "default": "America/Los_Angeles", - "$ref": [ - "definitions/timezone" - ], - "enum": [ - { - "value": "Asia/Damascus", - "description": "'Asia/Damascus' timezone" - }, - { - "value": "Asia/Saigon", - "description": "'Asia/Saigon' timezone" - } - ] - } - }, - { - "variable": "podOptions", - "group": "General", - "label": "Global Pod Options (Advanced)", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "expertPodOpts", - "label": "Expert - Pod Options", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hostNetwork", - "label": "Host Networking", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "dnsConfig", - "label": "DNS Configuration", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "options", - "label": "Options", - "schema": { - "type": "list", - "default": [ - { - "name": "ndots", - "value": "1" - } - ], - "items": [ - { - "variable": "optionsEntry", - "label": "Option Entry", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "nameservers", - "label": "Nameservers", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "nsEntry", - "label": "Nameserver Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "searches", - "label": "Searches", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "searchEntry", - "label": "Search Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "imagePullSecretList", - "group": "General", - "label": "Image Pull Secrets", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pullsecretentry", - "label": "Pull Secret", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "data", - "label": "Data", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "registry", - "label": "Registry", - "schema": { - "type": "string", - "required": true, - "default": "https://index.docker.io/v1/" - } - }, - { - "variable": "username", - "label": "Username", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "schema": { - "type": "string", - "required": true, - "private": true, - "default": "" - } - }, - { - "variable": "email", - "label": "Email", - "schema": { - "type": "string", - "required": true, - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "service", - "group": "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)" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "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": 5454, - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "scaleExternalInterface", - "description": "Add External Interfaces (Experimental, might change or be removed without further notice)", - "label": "Add external Interfaces (Experimental)", - "group": "Networking", - "schema": { - "type": "list", - "items": [ - { - "variable": "interfaceConfiguration", - "description": "Interface Configuration", - "label": "Interface Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "normalize/interfaceConfiguration" - ], - "attrs": [ - { - "variable": "hostInterface", - "description": "Please Specify Host Interface", - "label": "Host Interface", - "schema": { - "type": "string", - "required": true, - "$ref": [ - "definitions/interface" - ], - "enum": [] - } - }, - { - "variable": "ipam", - "description": "Define how IP Address will be managed", - "label": "IP Address Management", - "schema": { - "additional_attrs": true, - "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" - } - ] - } - }, - { - "variable": "staticIPConfigurations", - "label": "Static IP Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "items": [ - { - "variable": "staticIP", - "label": "Static IP", - "schema": { - "type": "ipaddr", - "cidr": true - } - } - ] - } - }, - { - "variable": "staticRoutes", - "label": "Static Routes", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "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": "serviceList", - "label": "Add Manual Custom Services", - "group": "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": "Persistence", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "config", - "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": "pvc", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - }, - { - "value": "iscsi", - "description": "iSCSI Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size quotum of Storage (Do NOT REDUCE after installation)", - "description": "This value can ONLY be INCREASED after the installation", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "persistenceList", - "label": "Additional App Storage", - "group": "Persistence", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "persistenceListEntry", - "label": "Custom Storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the storage", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "type", - "label": "Type of Storage", - "description": "Sets the persistence type, Anything other than PVC could break rollback!", - "schema": { - "type": "string", - "default": "hostPath", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "mountPath", - "label": "Mount Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "type": "string", - "default": "", - "required": true, - "valid_chars": "^\\/([a-zA-Z0-9._-]+(\\s?[a-zA-Z0-9._-]+|\\/?))+$" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size Quotum of Storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "", - "group": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name (Optional)", - "description": "Defaults to chart name", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description (Optional)", - "description": "Defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "icon", - "label": "Icon (Optional)", - "description": "Defaults to chart icon", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "widget", - "label": "Widget Settings", - "schema": { - "type": "dict", - "additional_attrs": true, - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "attrs": [ - { - "variable": "enabled", - "label": "Enable Widget", - "description": "When disabled all widget annotations are skipped.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "custom", - "label": "Options", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "key", - "label": "API-key (key)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "customkv", - "label": "Custom Options", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "option", - "label": "Option", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingressList", - "label": "Add Manual Custom Ingresses", - "group": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressListEntry", - "label": "Custom Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "ingressClassName", - "label": "IngressClass Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - }, - { - "variable": "overrideService", - "label": "Linked Service", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Service Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "port", - "label": "Service Port", - "schema": { - "type": "int" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Secret (Advanced)", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description", - "description": "defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "securityContext", - "group": "SecurityContext", - "label": "Security Context", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "container", - "label": "Container", - "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": "PUID", - "label": "Process User ID - PUID", - "description": "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps", - "schema": { - "type": "int", - "show_if": [ - [ - "runAsUser", - "=", - 0 - ] - ], - "default": 568 - } - }, - { - "variable": "UMASK", - "label": "UMASK", - "description": "When supported by the container, this sets the UMASK for the App. Not supported by all Apps", - "schema": { - "type": "string", - "default": "0022" - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "privileged", - "label": "Privileged mode", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "readOnlyRootFilesystem", - "label": "ReadOnly Root Filesystem", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - }, - { - "variable": "pod", - "label": "Pod", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "fsGroupChangePolicy", - "label": "When should we take ownership?", - "schema": { - "type": "string", - "default": "OnRootMismatch", - "enum": [ - { - "value": "OnRootMismatch", - "description": "OnRootMismatch" - }, - { - "value": "Always", - "description": "Always" - } - ] - } - }, - { - "variable": "supplementalGroups", - "label": "Supplemental Groups", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "supplementalGroupsEntry", - "label": "Supplemental Group", - "schema": { - "type": "int" - } - } - ] - } - }, - { - "variable": "fsGroup", - "label": "fsGroup", - "description": "The group that should own ALL storage.", - "schema": { - "type": "int", - "default": 568 - } - } - ] - } - } - ] - } - }, - { - "variable": "resources", - "group": "Resources", - "label": "Resource Limits", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "limits", - "label": "Advanced Limit Resource Consumption", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "4000m", - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "8Gi", - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - }, - { - "variable": "gpu.intel.com/i915", - "label": "Add Intel i915 GPUs", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "nvidia.com/gpu", - "label": "Add NVIDIA GPUs (Experimental)", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "amd.com/gpu", - "label": "Add AMD GPUs", - "schema": { - "type": "int", - "default": 0 - } - } - ] - } - }, - { - "variable": "requests", - "label": "Minimum Resources Required (request)", - "schema": { - "additional_attrs": true, - "type": "dict", - "hidden": true, - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "10m", - "hidden": true, - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "50Mi", - "hidden": true, - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - } - ] - } - } - ] - } - }, - { - "variable": "deviceList", - "label": "Mount USB Devices", - "group": "Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "deviceListEntry", - "label": "Device", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the Storage", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "type", - "label": "(Advanced) Type of Storage", - "description": "Sets the persistence type", - "schema": { - "type": "string", - "default": "device", - "hidden": true - } - }, - { - "variable": "readOnly", - "label": "readOnly", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Device Path", - "description": "Path to the device on the host system", - "schema": { - "type": "path" - } - }, - { - "variable": "mountPath", - "label": "Container Device Path", - "description": "Path inside the container the device is mounted", - "schema": { - "type": "string", - "default": "/dev/ttyACM0" - } - } - ] - } - } - ] - } - }, - { - "variable": "networkPolicy", - "group": "Experimental", - "label": "(Advanced) Network Policy", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "netPolicyEntry", - "label": "Network Policy Entry", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "policyType", - "label": "Policy Type", - "schema": { - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "ingress", - "description": "Ingress" - }, - { - "value": "egress", - "description": "Egress" - }, - { - "value": "ingress-egress", - "description": "Ingress and Egress" - } - ] - } - }, - { - "variable": "egress", - "label": "Egress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "egressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "to", - "label": "To", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "toEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "from", - "label": "From", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "fromEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "addons", - "group": "Addons", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "Codeserver", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "service", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Service Type", - "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer", - "schema": { - "type": "string", - "default": "LoadBalancer", - "enum": [ - { - "value": "NodePort", - "description": "Deprecated CHANGE THIS" - }, - { - "value": "ClusterIP", - "description": "ClusterIP" - }, - { - "value": "LoadBalancer", - "description": "LoadBalancer" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int", - "default": 36107 - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "scaleCert", - "label": "Use TrueNAS SCALE Certificate (Deprecated)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "int", - "$ref": [ - "definitions/certificate" - ], - "enum": [ - { - "value": null, - "description": "No Certificate" - } - ], - "default": null, - "null": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "envList", - "label": "Codeserver Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "netshoot", - "label": "Netshoot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "envList", - "label": "Netshoot Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "vpn", - "label": "VPN", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "gluetun", - "description": "Gluetun" - }, - { - "value": "tailscale", - "description": "Tailscale" - }, - { - "value": "openvpn", - "description": "OpenVPN (Deprecated)" - }, - { - "value": "wireguard", - "description": "Wireguard (Deprecated)" - } - ] - } - }, - { - "variable": "openvpn", - "label": "OpenVPN Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "openvpn" - ] - ], - "attrs": [ - { - "variable": "username", - "label": "Authentication Username (Optional)", - "description": "Authentication Username, Optional", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "Authentication Password", - "description": "Authentication Credentials", - "schema": { - "type": "string", - "show_if": [ - [ - "username", - "!=", - "" - ] - ], - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "tailscale", - "label": "Tailscale Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "tailscale" - ] - ], - "attrs": [ - { - "variable": "authkey", - "label": "Authentication Key", - "description": "Provide an auth key to automatically authenticate the node as your user account.", - "schema": { - "type": "string", - "private": true, - "default": "" - } - }, - { - "variable": "auth_once", - "label": "Auth Once", - "description": "Only attempt to log in if not already logged in.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "accept_dns", - "label": "Accept DNS", - "description": "Accept DNS configuration from the admin console.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "userspace", - "label": "Userspace", - "description": "Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "routes", - "label": "Routes", - "description": "Expose physical subnet routes to your entire Tailscale network.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "dest_ip", - "label": "Destination IP", - "description": "Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "sock5_server", - "label": "Sock5 Server", - "description": "The address on which to listen for SOCKS5 proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "outbound_http_proxy_listen", - "label": "Outbound HTTP Proxy Listen", - "description": "The address on which to listen for HTTP proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "extra_args", - "label": "Extra Args", - "description": "Extra Args", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "daemon_extra_args", - "label": "Tailscale Daemon Extra Args", - "description": "Tailscale Daemon Extra Args", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "killSwitch", - "label": "Enable Killswitch", - "schema": { - "type": "boolean", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": true - } - }, - { - "variable": "excludedNetworks_IPv4", - "label": "Killswitch Excluded IPv4 networks", - "description": "List of Killswitch Excluded IPv4 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv4", - "label": "IPv4 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "excludedNetworks_IPv6", - "label": "Killswitch Excluded IPv6 networks", - "description": "List of Killswitch Excluded IPv6 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv6", - "label": "IPv6 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "configFile", - "label": "VPN Config File Location", - "schema": { - "type": "string", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": "" - } - }, - { - "variable": "envList", - "label": "VPN Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true, - "max_length": 10240 - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "docs", - "group": "Documentation", - "label": "Please read the documentation at https://truecharts.org", - "description": "Please read the documentation at
    https://truecharts.org", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDocs", - "label": "I have checked the documentation", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "donateNag", - "group": "Documentation", - "label": "Please consider supporting TrueCharts, see https://truecharts.org/sponsor", - "description": "Please consider supporting TrueCharts, see
    https://truecharts.org/sponsor", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDonate", - "label": "I have considered donating", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - } - ] - } - } - ] - }, - "app_readme": "

    This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.

    \n

    This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/notifiarr

    \n
    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    ", - "detailed_readme": "
    \n

    title: README

    \n

    General Info

    \n

    TrueCharts can be installed as both normal Helm Charts or as TrueNAS SCALE Apps.\nBoth solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible

    \n

    For more information about this Chart, please check the docs on the TrueCharts website

    \n

    This chart is not maintained by the upstream project and any issues with the chart should be raised here

    \n

    Installation

    \n

    Helm-Chart installation

    \n

    To install TrueCharts Helm charts using Helm, you can use our OCI Repository.

    \n

    helm install mychart oci://tccr.io/truecharts/CHARTNAME

    \n

    For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/

    \n

    TrueNAS SCALE Apps

    \n

    For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the quick-start guides for TrueNAS SCALE.

    \n

    Configuration Options

    \n

    To view the chart specific options, please view Values.yaml included in the chart.

    \n

    All our Charts use a shared \"common\" library chart that contains most of the templating and options.\nFor the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/

    \n

    Chart Specific Guides and information

    \n

    All our charts have dedicated documentation pages.\nThe documentation for this chart can be found here:\nhttps://truecharts.org/charts/stable/notifiarr

    \n

    Support

    \n\n
    \n

    Sponsor TrueCharts

    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    \n

    All Rights Reserved - The TrueCharts Project

    ", - "changelog": "

    for the complete changelog, please refer to the website

    \n

    Important:

    " - }, - "4.8.13": { - "healthy": true, - "supported": true, - "healthy_error": null, - "location": "/home/runner/_work/catalog/catalog/stable/notifiarr/4.8.13", - "last_update": "2024-05-29 12:35:14", - "required_features": [ - "definitions/timezone", - "normalize/interfaceConfiguration", - "definitions/certificate", - "definitions/interface" - ], - "human_version": "0.7.0_4.8.13", - "version": "4.8.13", - "chart_metadata": { - "annotations": { - "max_scale_version": "24.04.0", - "min_scale_version": "23.10.0", - "truecharts.org/category": "MediaApp-Other", - "truecharts.org/max_helm_version": "3.14", - "truecharts.org/min_helm_version": "3.11", - "truecharts.org/train": "stable" - }, - "apiVersion": "v2", - "appVersion": "0.7.0", - "dependencies": [ - { - "name": "common", - "version": "20.3.11", - "repository": "oci://tccr.io/truecharts", - "condition": "", - "alias": "", - "tags": [], - "import-values": [] - } - ], - "deprecated": false, - "description": "This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.", - "home": "https://truecharts.org/charts/stable/notifiarr", - "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp", - "keywords": [ - "plex", - "discord", - "MediaApp-Other", - "notification" - ], - "kubeVersion": ">=1.24.0-0", - "maintainers": [ - { - "name": "TrueCharts", - "email": "info@truecharts.org", - "url": "https://truecharts.org" - } - ], - "name": "notifiarr", - "sources": [ - "https://github.com/Notifiarr/notifiarr", - "https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr", - "https://hub.docker.com/r/golift/notifiarr" - ], - "type": "application", - "version": "4.8.13" - }, - "app_metadata": null, - "schema": { - "groups": [ - { - "name": "Image", - "description": "Configured the images to be used for the Chart.\nIt's wise to use \"digest pinned\" tags and to avoid using \"latest\".\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/#images\n" - }, - { - "name": "General", - "description": "For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general.\n\nCheckout the following documentation for more information:\n - https://truecharts.org/common/global/\n - https://truecharts.org/common/#tz\n - https://truecharts.org/common/podoptions/\n - Image Pull Secrets\n" - }, - { - "name": "Workload", - "description": "These settings configure how the actual Pods and containers are running.\nGenerally, on SCALE, we only expose a limited subset of these settings for the primary workload and container.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/workload/\n- https://truecharts.org/common/container/\n" - }, - { - "name": "App Configuration", - "description": "Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application.\nMost options should have a Tooltip (Circled Question Mark) to further describe said option.\n\nTo find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/\n" - }, - { - "name": "Services", - "description": "Service and Networking options for any applications are contained here.\nSome applications may have complicated networking setups with multiple options or some may have no options here at all.\n\nOptions here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/service/\n" - }, - { - "name": "Networking", - "description": "Contains advanced networking options that are not actively supported by the TrueCharts team.\nCurrently only contains scaleExternalInterfaces.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/scaleexternalinterface/\n" - }, - { - "name": "Persistence", - "description": "Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types.\nThis storage is called Persistence since it is not deleted upon restart or upgrade of an application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/\n- https://truecharts.org/scale/guides/nfs-share/\n- https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath\n" - }, - { - "name": "Ingress", - "description": "Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names).\nIf you choose to enable this you must have a \"Ingress Provider\" aka \"Reverse Proxy\" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/)\nIt also requiresa DNS service to actually resolve the DNS name of the FQDN specified.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/ingress/\n" - }, - { - "name": "SecurityContext", - "description": "The security settings for each application and/or permissions that each application may have for the files/directories created.\nEach application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities.\n\nUnless necessary users are advised to keep this section mostly to defaults.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/securitycontext/\n" - }, - { - "name": "Resources", - "description": "Resources limits that have been defined by each application are in this section.\nMost will have a specific default that some users may want to change based on their specific hardware or needs.\n\nThis also contains the options to mount GPUs or, more precisely, \"request\" GPU's to be mounted.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/resources/\n" - }, - { - "name": "Devices", - "description": "These are special \"mountpoints\" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts.\nFor clearity we've decided to seperate this from persistence on SCALE.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/persistence/device/\n- https://truecharts.org/scale/guides/pci-passthrough/\n" - }, - { - "name": "Middlewares", - "description": "Traefik Middlewares" - }, - { - "name": "StorageClass", - "description": "StorageClasses define where to storage Storage.\n\nCheckout the following documentation for more information:\n" - }, - { - "name": "Metrics", - "description": "Contains options to configure Prometheus metrics for the application.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/metrics/\n" - }, - { - "name": "Addons", - "description": "Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application\u2019s defaults.\nThings included here are VPN addons, Codeserver for editing files inside the application\u2019s container, Netshoot for network troubelshooting, etc.\n\nGenerally not required for use but may be necessary or usefull at times for specific applications.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/addons/\n- https://truecharts.org/scale/guides/vpn-setup/\n" - }, - { - "name": "Experimental", - "description": "Experimental Configuration Options\nOften these are not fully flushed-out, could randomly break or might not work at-all.\n" - }, - { - "name": "Postgresql", - "description": "For Postgresql we use \"CloudNative-PG\" as a backend, which has to be installed first.\n\nCheckout the following documentation for more information:\n- https://truecharts.org/common/cnpg/\n- https://truecharts.org/scale/guides/sql-export/\n- https://truecharts.org/scale/guides/recover-cnpg/\n" - }, - { - "name": "Dependencies", - "description": "contains dependency setting for which we, currently, do not have seperate catagories (yet)\n" - }, - { - "name": "Documentation", - "description": "We added this section to make everyone aware that OpenSource isn't always easy.\nIt doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects.\n\nBefore installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/\nWe would also advice going over our https://truecharts.org/scale/guides/scale-intro/\nand many of the other documentation pages...\n" - } - ], - "portals": { - "open": { - "protocols": [ - "$kubernetes-resource_configmap_tcportal-open_protocol" - ], - "host": [ - "$kubernetes-resource_configmap_tcportal-open_host" - ], - "ports": [ - "$kubernetes-resource_configmap_tcportal-open_port" - ] - } - }, - "questions": [ - { - "variable": "global", - "group": "General", - "label": "Global Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "stopAll", - "label": "Stop All", - "description": "Stops All Running pods and hibernates cnpg", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - }, - { - "variable": "workload", - "group": "Workload", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type (Advanced)", - "schema": { - "type": "string", - "default": "Deployment", - "enum": [ - { - "value": "Deployment", - "description": "Deployment" - }, - { - "value": "DaemonSet", - "description": "DaemonSet" - } - ] - } - }, - { - "variable": "replicas", - "label": "Replicas (Advanced)", - "description": "Set the number of Replicas", - "schema": { - "type": "int", - "show_if": [ - [ - "type", - "!=", - "DaemonSet" - ] - ], - "default": 1 - } - }, - { - "variable": "podSpec", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "containers", - "label": "Containers", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "envList", - "label": "Extra Environment Variables", - "description": "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting...", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string" - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "extraArgs", - "label": "Extra Args", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "arg", - "label": "Arg", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "command", - "label": "Command", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "param", - "label": "Param", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "notifiarr", - "group": "App Configuration", - "label": "Image Environment", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "apikey", - "label": "Notifiarr All API Key", - "description": "Notifiarr All Integrations API key from https://notifiarr.com
    \nNOTE: Use 'admin' as username and your API key as the password
    \nfor your first-time login credentials.
    \nAfter login you must change your password from the UI.\n", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "upstreams", - "label": "Upstreams", - "description": "Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled.", - "schema": { - "type": "list", - "default": [ - "172.16.0.0/16" - ], - "items": [ - { - "variable": "upstreamEntry", - "label": "Upstream", - "description": "Upstream IP or CIDR", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "TZ", - "label": "Timezone", - "group": "General", - "schema": { - "type": "string", - "default": "America/Los_Angeles", - "$ref": [ - "definitions/timezone" - ], - "enum": [ - { - "value": "Asia/Damascus", - "description": "'Asia/Damascus' timezone" - }, - { - "value": "Asia/Saigon", - "description": "'Asia/Saigon' timezone" - } - ] - } - }, - { - "variable": "podOptions", - "group": "General", - "label": "Global Pod Options (Advanced)", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "expertPodOpts", - "label": "Expert - Pod Options", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hostNetwork", - "label": "Host Networking", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "dnsConfig", - "label": "DNS Configuration", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "options", - "label": "Options", - "schema": { - "type": "list", - "default": [ - { - "name": "ndots", - "value": "1" - } - ], - "items": [ - { - "variable": "optionsEntry", - "label": "Option Entry", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "nameservers", - "label": "Nameservers", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "nsEntry", - "label": "Nameserver Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "searches", - "label": "Searches", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "searchEntry", - "label": "Search Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "imagePullSecretList", - "group": "General", - "label": "Image Pull Secrets", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pullsecretentry", - "label": "Pull Secret", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "data", - "label": "Data", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "registry", - "label": "Registry", - "schema": { - "type": "string", - "required": true, - "default": "https://index.docker.io/v1/" - } - }, - { - "variable": "username", - "label": "Username", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "schema": { - "type": "string", - "required": true, - "private": true, - "default": "" - } - }, - { - "variable": "email", - "label": "Email", - "schema": { - "type": "string", - "required": true, - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "service", - "group": "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)" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "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": 5454, - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "scaleExternalInterface", - "description": "Add External Interfaces (Experimental, might change or be removed without further notice)", - "label": "Add external Interfaces (Experimental)", - "group": "Networking", - "schema": { - "type": "list", - "items": [ - { - "variable": "interfaceConfiguration", - "description": "Interface Configuration", - "label": "Interface Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "normalize/interfaceConfiguration" - ], - "attrs": [ - { - "variable": "hostInterface", - "description": "Please Specify Host Interface", - "label": "Host Interface", - "schema": { - "type": "string", - "required": true, - "$ref": [ - "definitions/interface" - ], - "enum": [] - } - }, - { - "variable": "ipam", - "description": "Define how IP Address will be managed", - "label": "IP Address Management", - "schema": { - "additional_attrs": true, - "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" - } - ] - } - }, - { - "variable": "staticIPConfigurations", - "label": "Static IP Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "items": [ - { - "variable": "staticIP", - "label": "Static IP", - "schema": { - "type": "ipaddr", - "cidr": true - } - } - ] - } - }, - { - "variable": "staticRoutes", - "label": "Static Routes", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "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": "serviceList", - "label": "Add Manual Custom Services", - "group": "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": "Persistence", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "config", - "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": "pvc", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - }, - { - "value": "iscsi", - "description": "iSCSI Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size quotum of Storage (Do NOT REDUCE after installation)", - "description": "This value can ONLY be INCREASED after the installation", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "persistenceList", - "label": "Additional App Storage", - "group": "Persistence", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "persistenceListEntry", - "label": "Custom Storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the storage", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "type", - "label": "Type of Storage", - "description": "Sets the persistence type, Anything other than PVC could break rollback!", - "schema": { - "type": "string", - "default": "hostPath", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "mountPath", - "label": "Mount Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "type": "string", - "default": "", - "required": true, - "valid_chars": "^\\/([a-zA-Z0-9._-]+(\\s?[a-zA-Z0-9._-]+|\\/?))+$" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size Quotum of Storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "", - "group": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name (Optional)", - "description": "Defaults to chart name", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description (Optional)", - "description": "Defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "icon", - "label": "Icon (Optional)", - "description": "Defaults to chart icon", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "widget", - "label": "Widget Settings", - "schema": { - "type": "dict", - "additional_attrs": true, - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "attrs": [ - { - "variable": "enabled", - "label": "Enable Widget", - "description": "When disabled all widget annotations are skipped.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "custom", - "label": "Options", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "key", - "label": "API-key (key)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "customkv", - "label": "Custom Options", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "option", - "label": "Option", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingressList", - "label": "Add Manual Custom Ingresses", - "group": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressListEntry", - "label": "Custom Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "ingressClassName", - "label": "IngressClass Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - }, - { - "variable": "overrideService", - "label": "Linked Service", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Service Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "port", - "label": "Service Port", - "schema": { - "type": "int" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Secret (Advanced)", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description", - "description": "defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "securityContext", - "group": "SecurityContext", - "label": "Security Context", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "container", - "label": "Container", - "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": "PUID", - "label": "Process User ID - PUID", - "description": "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps", - "schema": { - "type": "int", - "show_if": [ - [ - "runAsUser", - "=", - 0 - ] - ], - "default": 568 - } - }, - { - "variable": "UMASK", - "label": "UMASK", - "description": "When supported by the container, this sets the UMASK for the App. Not supported by all Apps", - "schema": { - "type": "string", - "default": "0022" - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "privileged", - "label": "Privileged mode", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "readOnlyRootFilesystem", - "label": "ReadOnly Root Filesystem", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - }, - { - "variable": "pod", - "label": "Pod", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "fsGroupChangePolicy", - "label": "When should we take ownership?", - "schema": { - "type": "string", - "default": "OnRootMismatch", - "enum": [ - { - "value": "OnRootMismatch", - "description": "OnRootMismatch" - }, - { - "value": "Always", - "description": "Always" - } - ] - } - }, - { - "variable": "supplementalGroups", - "label": "Supplemental Groups", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "supplementalGroupsEntry", - "label": "Supplemental Group", - "schema": { - "type": "int" - } - } - ] - } - }, - { - "variable": "fsGroup", - "label": "fsGroup", - "description": "The group that should own ALL storage.", - "schema": { - "type": "int", - "default": 568 - } - } - ] - } - } - ] - } - }, - { - "variable": "resources", - "group": "Resources", - "label": "Resource Limits", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "limits", - "label": "Advanced Limit Resource Consumption", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "4000m", - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "8Gi", - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - }, - { - "variable": "gpu.intel.com/i915", - "label": "Add Intel i915 GPUs", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "nvidia.com/gpu", - "label": "Add NVIDIA GPUs (Experimental)", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "amd.com/gpu", - "label": "Add AMD GPUs", - "schema": { - "type": "int", - "default": 0 - } - } - ] - } - }, - { - "variable": "requests", - "label": "Minimum Resources Required (request)", - "schema": { - "additional_attrs": true, - "type": "dict", - "hidden": true, - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "10m", - "hidden": true, - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "50Mi", - "hidden": true, - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - } - ] - } - } - ] - } - }, - { - "variable": "deviceList", - "label": "Mount USB Devices", - "group": "Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "deviceListEntry", - "label": "Device", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the Storage", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "type", - "label": "(Advanced) Type of Storage", - "description": "Sets the persistence type", - "schema": { - "type": "string", - "default": "device", - "hidden": true - } - }, - { - "variable": "readOnly", - "label": "readOnly", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Device Path", - "description": "Path to the device on the host system", - "schema": { - "type": "path" - } - }, - { - "variable": "mountPath", - "label": "Container Device Path", - "description": "Path inside the container the device is mounted", - "schema": { - "type": "string", - "default": "/dev/ttyACM0" - } - } - ] - } - } - ] - } - }, - { - "variable": "networkPolicy", - "group": "Experimental", - "label": "(Advanced) Network Policy", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "netPolicyEntry", - "label": "Network Policy Entry", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "policyType", - "label": "Policy Type", - "schema": { - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "ingress", - "description": "Ingress" - }, - { - "value": "egress", - "description": "Egress" - }, - { - "value": "ingress-egress", - "description": "Ingress and Egress" - } - ] - } - }, - { - "variable": "egress", - "label": "Egress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "egressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "to", - "label": "To", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "toEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "from", - "label": "From", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "fromEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "addons", - "group": "Addons", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "Codeserver", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "service", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Service Type", - "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer", - "schema": { - "type": "string", - "default": "LoadBalancer", - "enum": [ - { - "value": "NodePort", - "description": "Deprecated CHANGE THIS" - }, - { - "value": "ClusterIP", - "description": "ClusterIP" - }, - { - "value": "LoadBalancer", - "description": "LoadBalancer" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int", - "default": 36107 - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "scaleCert", - "label": "Use TrueNAS SCALE Certificate (Deprecated)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "int", - "$ref": [ - "definitions/certificate" - ], - "enum": [ - { - "value": null, - "description": "No Certificate" - } - ], - "default": null, - "null": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "envList", - "label": "Codeserver Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "netshoot", - "label": "Netshoot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "envList", - "label": "Netshoot Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "vpn", - "label": "VPN", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "gluetun", - "description": "Gluetun" - }, - { - "value": "tailscale", - "description": "Tailscale" - }, - { - "value": "openvpn", - "description": "OpenVPN (Deprecated)" - }, - { - "value": "wireguard", - "description": "Wireguard (Deprecated)" - } - ] - } - }, - { - "variable": "openvpn", - "label": "OpenVPN Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "openvpn" - ] - ], - "attrs": [ - { - "variable": "username", - "label": "Authentication Username (Optional)", - "description": "Authentication Username, Optional", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "Authentication Password", - "description": "Authentication Credentials", - "schema": { - "type": "string", - "show_if": [ - [ - "username", - "!=", - "" - ] - ], - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "tailscale", - "label": "Tailscale Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "tailscale" - ] - ], - "attrs": [ - { - "variable": "authkey", - "label": "Authentication Key", - "description": "Provide an auth key to automatically authenticate the node as your user account.", - "schema": { - "type": "string", - "private": true, - "default": "" - } - }, - { - "variable": "auth_once", - "label": "Auth Once", - "description": "Only attempt to log in if not already logged in.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "accept_dns", - "label": "Accept DNS", - "description": "Accept DNS configuration from the admin console.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "userspace", - "label": "Userspace", - "description": "Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "routes", - "label": "Routes", - "description": "Expose physical subnet routes to your entire Tailscale network.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "dest_ip", - "label": "Destination IP", - "description": "Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "sock5_server", - "label": "Sock5 Server", - "description": "The address on which to listen for SOCKS5 proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "outbound_http_proxy_listen", - "label": "Outbound HTTP Proxy Listen", - "description": "The address on which to listen for HTTP proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "extra_args", - "label": "Extra Args", - "description": "Extra Args", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "daemon_extra_args", - "label": "Tailscale Daemon Extra Args", - "description": "Tailscale Daemon Extra Args", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "killSwitch", - "label": "Enable Killswitch", - "schema": { - "type": "boolean", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": true - } - }, - { - "variable": "excludedNetworks_IPv4", - "label": "Killswitch Excluded IPv4 networks", - "description": "List of Killswitch Excluded IPv4 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv4", - "label": "IPv4 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "excludedNetworks_IPv6", - "label": "Killswitch Excluded IPv6 networks", - "description": "List of Killswitch Excluded IPv6 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv6", - "label": "IPv6 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "configFile", - "label": "VPN Config File Location", - "schema": { - "type": "string", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": "" - } - }, - { - "variable": "envList", - "label": "VPN Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true, - "max_length": 10240 - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "docs", - "group": "Documentation", - "label": "Please read the documentation at https://truecharts.org", - "description": "Please read the documentation at
    https://truecharts.org", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDocs", - "label": "I have checked the documentation", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "donateNag", - "group": "Documentation", - "label": "Please consider supporting TrueCharts, see https://truecharts.org/sponsor", - "description": "Please consider supporting TrueCharts, see
    https://truecharts.org/sponsor", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDonate", - "label": "I have considered donating", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - } - ] - } - } - ] - }, - "app_readme": "

    This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.

    \n

    This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/notifiarr

    \n
    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    ", - "detailed_readme": "
    \n

    title: README

    \n

    General Info

    \n

    TrueCharts can be installed as both normal Helm Charts or as TrueNAS SCALE Apps.\nBoth solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible

    \n

    For more information about this Chart, please check the docs on the TrueCharts website

    \n

    This chart is not maintained by the upstream project and any issues with the chart should be raised here

    \n

    Installation

    \n

    Helm-Chart installation

    \n

    To install TrueCharts Helm charts using Helm, you can use our OCI Repository.

    \n

    helm install mychart oci://tccr.io/truecharts/CHARTNAME

    \n

    For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/

    \n

    TrueNAS SCALE Apps

    \n

    For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the quick-start guides for TrueNAS SCALE.

    \n

    Configuration Options

    \n

    To view the chart specific options, please view Values.yaml included in the chart.

    \n

    All our Charts use a shared \"common\" library chart that contains most of the templating and options.\nFor the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/

    \n

    Chart Specific Guides and information

    \n

    All our charts have dedicated documentation pages.\nThe documentation for this chart can be found here:\nhttps://truecharts.org/charts/stable/notifiarr

    \n

    Support

    \n\n
    \n

    Sponsor TrueCharts

    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    \n

    All Rights Reserved - The TrueCharts Project

    ", - "changelog": "

    for the complete changelog, please refer to the website

    \n

    Important:

    " - }, - "3.3.0": { - "healthy": true, - "supported": true, - "healthy_error": null, - "location": "/home/runner/_work/catalog/catalog/stable/notifiarr/3.3.0", - "last_update": "2024-05-29 12:35:14", - "required_features": [ - "definitions/timezone", - "definitions/gpuConfiguration", - "definitions/interface", - "normalize/interfaceConfiguration", - "definitions/certificate" - ], - "human_version": "0.7.0_3.3.0", - "version": "3.3.0", - "chart_metadata": { - "annotations": { - "max_scale_version": "24.04.0", - "min_scale_version": "23.10.0", - "truecharts.org/category": "MediaApp-Other", - "truecharts.org/max_helm_version": "3.14", - "truecharts.org/min_helm_version": "3.12", - "truecharts.org/train": "stable" - }, - "apiVersion": "v2", - "appVersion": "0.7.0", - "dependencies": [ - { - "name": "common", - "version": "17.5.0", - "repository": "oci://tccr.io/truecharts", - "condition": "", - "alias": "", - "tags": [], - "import-values": [] - } - ], - "deprecated": false, - "description": "This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.", - "home": "https://truecharts.org/charts/stable/notifiarr", - "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.png", - "keywords": [ - "plex", - "discord", - "MediaApp-Other", - "notification" - ], - "kubeVersion": ">=1.24.0-0", - "maintainers": [ - { - "name": "TrueCharts", - "email": "info@truecharts.org", - "url": "https://truecharts.org" - } - ], - "name": "notifiarr", - "sources": [ - "https://github.com/Notifiarr/notifiarr", - "https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr", - "https://hub.docker.com/r/golift/notifiarr" - ], - "type": "application", - "version": "3.3.0" - }, - "app_metadata": null, - "schema": { - "groups": [ - { - "name": "Container Image", - "description": "Image to be used for container" - }, - { - "name": "General Settings", - "description": "General Deployment Settings" - }, - { - "name": "Workload Settings", - "description": "Workload Settings" - }, - { - "name": "App Configuration", - "description": "App Specific Config Options" - }, - { - "name": "Networking and Services", - "description": "Configure Network and Services for Container" - }, - { - "name": "Storage and Persistence", - "description": "Persist and Share Data that is Separate from the Container" - }, - { - "name": "Ingress", - "description": "Ingress Configuration" - }, - { - "name": "Security and Permissions", - "description": "Configure Security Context and Permissions" - }, - { - "name": "Resources and Devices", - "description": "Specify Resources/Devices to be Allocated to Workload" - }, - { - "name": "Middlewares", - "description": "Traefik Middlewares" - }, - { - "name": "Metrics", - "description": "Metrics" - }, - { - "name": "Addons", - "description": "Addon Configuration" - }, - { - "name": "Backup Configuration", - "description": "Configure Velero Backup Schedule" - }, - { - "name": "Advanced", - "description": "Advanced Configuration" - }, - { - "name": "Postgresql", - "description": "Postgresql" - }, - { - "name": "Documentation", - "description": "Documentation" - } - ], - "portals": { - "open": { - "protocols": [ - "$kubernetes-resource_configmap_tcportal-open_protocol" - ], - "host": [ - "$kubernetes-resource_configmap_tcportal-open_host" - ], - "ports": [ - "$kubernetes-resource_configmap_tcportal-open_port" - ] - } - }, - "questions": [ - { - "variable": "global", - "group": "General Settings", - "label": "Global Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "stopAll", - "label": "Stop All", - "description": "Stops All Running pods and hibernates cnpg", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - }, - { - "variable": "workload", - "group": "Workload Settings", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type (Advanced)", - "schema": { - "type": "string", - "default": "Deployment", - "enum": [ - { - "value": "Deployment", - "description": "Deployment" - }, - { - "value": "DaemonSet", - "description": "DaemonSet" - } - ] - } - }, - { - "variable": "replicas", - "label": "Replicas (Advanced)", - "description": "Set the number of Replicas", - "schema": { - "type": "int", - "show_if": [ - [ - "type", - "!=", - "DaemonSet" - ] - ], - "default": 1 - } - }, - { - "variable": "podSpec", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "containers", - "label": "Containers", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "envList", - "label": "Extra Environment Variables", - "description": "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting...", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string" - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "extraArgs", - "label": "Extra Args", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "arg", - "label": "Arg", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "command", - "label": "Command", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "param", - "label": "Param", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "notifiarr", - "group": "App Configuration", - "label": "Image Environment", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "apikey", - "label": "Notifiarr All API Key", - "description": "Notifiarr All Integrations API key from https://notifiarr.com
    \nNOTE: Use 'admin' as username and your API key as the password
    \nfor your first-time login credentials.
    \nAfter login you must change your password from the UI.\n", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "upstreams", - "label": "Upstreams", - "description": "Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled.", - "schema": { - "type": "list", - "default": [ - "172.16.0.0/16" - ], - "items": [ - { - "variable": "upstreamEntry", - "label": "Upstream", - "description": "Upstream IP or CIDR", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "TZ", - "label": "Timezone", - "group": "General Settings", - "schema": { - "type": "string", - "default": "America/Los_Angeles", - "$ref": [ - "definitions/timezone" - ], - "enum": [ - { - "value": "Asia/Damascus", - "description": "'Asia/Damascus' timezone" - }, - { - "value": "Asia/Saigon", - "description": "'Asia/Saigon' timezone" - } - ] - } - }, - { - "variable": "podOptions", - "group": "General Settings", - "label": "Global Pod Options (Advanced)", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "expertPodOpts", - "label": "Expert - Pod Options", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hostNetwork", - "label": "Host Networking", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "dnsConfig", - "label": "DNS Configuration", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "options", - "label": "Options", - "schema": { - "type": "list", - "default": [ - { - "name": "ndots", - "value": "1" - } - ], - "items": [ - { - "variable": "optionsEntry", - "label": "Option Entry", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "nameservers", - "label": "Nameservers", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "nsEntry", - "label": "Nameserver Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "searches", - "label": "Searches", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "searchEntry", - "label": "Search Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "imagePullSecretList", - "group": "General Settings", - "label": "Image Pull Secrets", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pullsecretentry", - "label": "Pull Secret", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "data", - "label": "Data", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "registry", - "label": "Registry", - "schema": { - "type": "string", - "required": true, - "default": "https://index.docker.io/v1/" - } - }, - { - "variable": "username", - "label": "Username", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "schema": { - "type": "string", - "required": true, - "private": true, - "default": "" - } - }, - { - "variable": "email", - "label": "Email", - "schema": { - "type": "string", - "required": true, - "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)" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "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": 5454, - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "serviceexpert", - "group": "Networking and Services", - "label": "Show Expert Config", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "scaleExternalInterface", - "description": "Add External Interfaces", - "label": "Add external Interfaces", - "group": "Networking", - "schema": { - "type": "list", - "items": [ - { - "variable": "interfaceConfiguration", - "description": "Interface Configuration", - "label": "Interface Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "normalize/interfaceConfiguration" - ], - "attrs": [ - { - "variable": "hostInterface", - "description": "Please Specify Host Interface", - "label": "Host Interface", - "schema": { - "type": "string", - "required": true, - "$ref": [ - "definitions/interface" - ], - "enum": [] - } - }, - { - "variable": "ipam", - "description": "Define how IP Address will be managed", - "label": "IP Address Management", - "schema": { - "additional_attrs": true, - "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" - } - ] - } - }, - { - "variable": "staticIPConfigurations", - "label": "Static IP Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "items": [ - { - "variable": "staticIP", - "label": "Static IP", - "schema": { - "type": "ipaddr", - "cidr": true - } - } - ] - } - }, - { - "variable": "staticRoutes", - "label": "Static Routes", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "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": "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": "config", - "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": "pvc", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - }, - { - "value": "iscsi", - "description": "iSCSI Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size quotum of Storage (Do NOT REDUCE after installation)", - "description": "This value can ONLY be INCREASED after the installation", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "persistenceList", - "label": "Additional App Storage", - "group": "Storage and Persistence", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "persistenceListEntry", - "label": "Custom Storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the storage", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "type", - "label": "Type of Storage", - "description": "Sets the persistence type, Anything other than PVC could break rollback!", - "schema": { - "type": "string", - "default": "hostPath", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "mountPath", - "label": "Mount Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "type": "string", - "default": "", - "required": true, - "valid_chars": "^\\/([a-zA-Z0-9._-]+(\\s?[a-zA-Z0-9._-]+|\\/?))+$" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size Quotum of Storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "", - "group": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name (Optional)", - "description": "Defaults to chart name", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description (Optional)", - "description": "Defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "icon", - "label": "Icon (Optional)", - "description": "Defaults to chart icon", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "widget", - "label": "Widget Settings", - "schema": { - "type": "dict", - "additional_attrs": true, - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "attrs": [ - { - "variable": "enabled", - "label": "Enable Widget", - "description": "When disabled all widget annotations are skipped.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "custom", - "label": "Options", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "key", - "label": "API-key (key)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "customkv", - "label": "Custom Options", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "option", - "label": "Option", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingressList", - "label": "Add Manual Custom Ingresses", - "group": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressListEntry", - "label": "Custom Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "ingressClassName", - "label": "IngressClass Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - }, - { - "variable": "overrideService", - "label": "Linked Service", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Service Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "port", - "label": "Service Port", - "schema": { - "type": "int" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Secret (Advanced)", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description", - "description": "defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "securityContext", - "group": "Security and Permissions", - "label": "Security Context", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "container", - "label": "Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "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": "PUID", - "label": "Process User ID - PUID", - "description": "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps", - "schema": { - "type": "int", - "show_if": [ - [ - "runAsUser", - "=", - 0 - ] - ], - "default": 568 - } - }, - { - "variable": "UMASK", - "label": "UMASK", - "description": "When supported by the container, this sets the UMASK for the App. Not supported by all Apps", - "schema": { - "type": "string", - "default": "0022" - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "privileged", - "label": "Privileged mode", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "readOnlyRootFilesystem", - "label": "ReadOnly Root Filesystem", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - }, - { - "variable": "pod", - "label": "Pod", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "fsGroupChangePolicy", - "label": "When should we take ownership?", - "schema": { - "type": "string", - "default": "OnRootMismatch", - "enum": [ - { - "value": "OnRootMismatch", - "description": "OnRootMismatch" - }, - { - "value": "Always", - "description": "Always" - } - ] - } - }, - { - "variable": "supplementalGroups", - "label": "Supplemental Groups", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "supplementalGroupsEntry", - "label": "Supplemental Group", - "schema": { - "type": "int" - } - } - ] - } - }, - { - "variable": "fsGroup", - "label": "fsGroup", - "description": "The group that should own ALL storage.", - "schema": { - "type": "int", - "default": 568 - } - } - ] - } - } - ] - } - }, - { - "variable": "resources", - "group": "Resources and Devices", - "label": "Resource Limits", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "limits", - "label": "Advanced Limit Resource Consumption", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "4000m", - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "8Gi", - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - }, - { - "variable": "intel.com/i915", - "label": "Add Intel i915 GPUs", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "nvidia.com/gpu", - "label": "Add NVIDIA GPUs (Experimental)", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "amd.com/gpu", - "label": "Add AMD GPUs", - "schema": { - "type": "int", - "default": 0 - } - } - ] - } - }, - { - "variable": "requests", - "label": "Minimum Resources Required (request)", - "schema": { - "additional_attrs": true, - "type": "dict", - "hidden": true, - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "10m", - "hidden": true, - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "50Mi", - "hidden": true, - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - } - ] - } - } - ] - } - }, - { - "variable": "deviceList", - "label": "Mount USB Devices", - "group": "Resources and Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "deviceListEntry", - "label": "Device", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the Storage", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "type", - "label": "(Advanced) Type of Storage", - "description": "Sets the persistence type", - "schema": { - "type": "string", - "default": "device", - "hidden": true - } - }, - { - "variable": "readOnly", - "label": "readOnly", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Device Path", - "description": "Path to the device on the host system", - "schema": { - "type": "path" - } - }, - { - "variable": "mountPath", - "label": "Container Device Path", - "description": "Path inside the container the device is mounted", - "schema": { - "type": "string", - "default": "/dev/ttyACM0" - } - } - ] - } - } - ] - } - }, - { - "variable": "scaleGPU", - "label": "GPU Configuration", - "group": "Resources and Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "scaleGPUEntry", - "label": "GPU", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "gpu", - "label": "Select GPU", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "definitions/gpuConfiguration" - ], - "attrs": [] - } - }, - { - "variable": "workaround", - "label": "Workaround", - "schema": { - "type": "string", - "default": "workaround", - "hidden": true - } - } - ] - } - } - ] - } - }, - { - "variable": "networkPolicy", - "group": "Advanced", - "label": "(Advanced) Network Policy", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "netPolicyEntry", - "label": "Network Policy Entry", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "policyType", - "label": "Policy Type", - "schema": { - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "ingress", - "description": "Ingress" - }, - { - "value": "egress", - "description": "Egress" - }, - { - "value": "ingress-egress", - "description": "Ingress and Egress" - } - ] - } - }, - { - "variable": "egress", - "label": "Egress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "egressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "to", - "label": "To", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "toEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "from", - "label": "From", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "fromEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "addons", - "group": "Addons", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "Codeserver", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "service", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Service Type", - "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer", - "schema": { - "type": "string", - "default": "LoadBalancer", - "enum": [ - { - "value": "NodePort", - "description": "Deprecated CHANGE THIS" - }, - { - "value": "ClusterIP", - "description": "ClusterIP" - }, - { - "value": "LoadBalancer", - "description": "LoadBalancer" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int", - "default": 36107 - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "scaleCert", - "label": "Use TrueNAS SCALE Certificate (Deprecated)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "int", - "$ref": [ - "definitions/certificate" - ], - "enum": [ - { - "value": null, - "description": "No Certificate" - } - ], - "default": null, - "null": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "envList", - "label": "Codeserver Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "netshoot", - "label": "Netshoot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "envList", - "label": "Netshoot Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "vpn", - "label": "VPN", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "gluetun", - "description": "Gluetun" - }, - { - "value": "tailscale", - "description": "Tailscale" - }, - { - "value": "openvpn", - "description": "OpenVPN (Deprecated)" - }, - { - "value": "wireguard", - "description": "Wireguard (Deprecated)" - } - ] - } - }, - { - "variable": "openvpn", - "label": "OpenVPN Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "openvpn" - ] - ], - "attrs": [ - { - "variable": "username", - "label": "Authentication Username (Optional)", - "description": "Authentication Username, Optional", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "Authentication Password", - "description": "Authentication Credentials", - "schema": { - "type": "string", - "show_if": [ - [ - "username", - "!=", - "" - ] - ], - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "tailscale", - "label": "Tailscale Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "tailscale" - ] - ], - "attrs": [ - { - "variable": "authkey", - "label": "Authentication Key", - "description": "Provide an auth key to automatically authenticate the node as your user account.", - "schema": { - "type": "string", - "private": true, - "default": "" - } - }, - { - "variable": "auth_once", - "label": "Auth Once", - "description": "Only attempt to log in if not already logged in.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "accept_dns", - "label": "Accept DNS", - "description": "Accept DNS configuration from the admin console.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "userspace", - "label": "Userspace", - "description": "Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "routes", - "label": "Routes", - "description": "Expose physical subnet routes to your entire Tailscale network.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "dest_ip", - "label": "Destination IP", - "description": "Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "sock5_server", - "label": "Sock5 Server", - "description": "The address on which to listen for SOCKS5 proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "outbound_http_proxy_listen", - "label": "Outbound HTTP Proxy Listen", - "description": "The address on which to listen for HTTP proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "extra_args", - "label": "Extra Args", - "description": "Extra Args", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "daemon_extra_args", - "label": "Tailscale Daemon Extra Args", - "description": "Tailscale Daemon Extra Args", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "killSwitch", - "label": "Enable Killswitch", - "schema": { - "type": "boolean", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": true - } - }, - { - "variable": "excludedNetworks_IPv4", - "label": "Killswitch Excluded IPv4 networks", - "description": "List of Killswitch Excluded IPv4 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv4", - "label": "IPv4 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "excludedNetworks_IPv6", - "label": "Killswitch Excluded IPv6 networks", - "description": "List of Killswitch Excluded IPv6 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv6", - "label": "IPv6 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "configFile", - "label": "VPN Config File Location", - "schema": { - "type": "string", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": "" - } - }, - { - "variable": "envList", - "label": "VPN Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true, - "max_length": 10240 - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "docs", - "group": "Documentation", - "label": "Please read the documentation at https://truecharts.org", - "description": "Please read the documentation at
    https://truecharts.org", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDocs", - "label": "I have checked the documentation", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "donateNag", - "group": "Documentation", - "label": "Please consider supporting TrueCharts, see https://truecharts.org/sponsor", - "description": "Please consider supporting TrueCharts, see
    https://truecharts.org/sponsor", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDonate", - "label": "I have considered donating", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - } - ] - } - } - ] - }, - "app_readme": "

    This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.

    \n

    This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/notifiarr

    \n
    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    ", - "detailed_readme": "
    \n

    title: README

    \n

    General Info

    \n

    TrueCharts can be installed as both normal Helm Charts or as Apps on TrueNAS SCALE.\nHowever only installations using the TrueNAS SCALE Apps system are supported.

    \n

    For more information about this App, please check the docs on the TrueCharts website

    \n

    This chart is not maintained by the upstream project and any issues with the chart should be raised here

    \n

    Support

    \n\n
    \n

    Sponsor TrueCharts

    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    \n

    All Rights Reserved - The TrueCharts Project

    ", - "changelog": "
    \n

    title: Changelog

    \n

    for the complete changelog, please refer to the website

    \n

    Important:

    \n

    notifiarr-3.1.11 (2024-02-03)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.30@19ad5ec by renovate (#17804)
    • \n
    \n

    notifiarr-3.1.10 (2024-01-26)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.29@d7c41a3 by renovate (#17545)
    • \n
    \n

    notifiarr-3.1.9 (2024-01-21)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.28@918b4c5 by renovate (#17478)
    • \n
    \n

    notifiarr-3.1.8 (2024-01-21)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.26@24c98f7 by renovate (#17409)
    • \n
    \n

    notifiarr-3.1.7 (2024-01-21)

    \n

    Chore

    \n
      \n
    • update metadata in chart.yaml (#17457)
    • \n
    \n

    notifiarr-3.1.6 (2024-01-09)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.22@e7c9056 by renovate (#16986)
    • \n
    \n

    notifiarr-3.1.5 (2024-01-02)

    \n

    Chore

    \n
      \n
    • force bump to ensure up-to-date catalogs
    • \n
    \n

    notifiarr-3.1.4 (2024-01-01)

    \n

    Chore

    \n
      \n
    • \n

      increase common version for oci fixes

      \n
    • \n
    • \n

      remove non-existent template refs (#16738)

      \n
    • \n
    \n

    notifiarr-3.1.3 (2024-01-01)

    \n

    Chore

    \n
      \n
    • \n

      bump all charts for OCI test push

      \n
    • \n
    • \n

      move everything to consume OCI-hosted common-chart dependency

      \n
    • \n
    • \n

      update container image common to v17.2.19@4ebb688 by renovate (#16733)

      \n
    • \n
    " - }, - "3.2.0": { - "healthy": true, - "supported": true, - "healthy_error": null, - "location": "/home/runner/_work/catalog/catalog/stable/notifiarr/3.2.0", - "last_update": "2024-05-29 12:35:14", - "required_features": [ - "definitions/timezone", - "definitions/gpuConfiguration", - "definitions/interface", - "normalize/interfaceConfiguration", - "definitions/certificate" - ], - "human_version": "0.7.0_3.2.0", - "version": "3.2.0", - "chart_metadata": { - "annotations": { - "max_scale_version": "24.04.0", - "min_scale_version": "23.10.0", - "truecharts.org/category": "MediaApp-Other", - "truecharts.org/max_helm_version": "3.14", - "truecharts.org/min_helm_version": "3.12", - "truecharts.org/train": "stable" - }, - "apiVersion": "v2", - "appVersion": "0.7.0", - "dependencies": [ - { - "name": "common", - "version": "17.4.2", - "repository": "oci://tccr.io/truecharts", - "condition": "", - "alias": "", - "tags": [], - "import-values": [] - } - ], - "deprecated": false, - "description": "This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.", - "home": "https://truecharts.org/charts/stable/notifiarr", - "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.png", - "keywords": [ - "plex", - "discord", - "MediaApp-Other", - "notification" - ], - "kubeVersion": ">=1.24.0-0", - "maintainers": [ - { - "name": "TrueCharts", - "email": "info@truecharts.org", - "url": "https://truecharts.org" - } - ], - "name": "notifiarr", - "sources": [ - "https://github.com/Notifiarr/notifiarr", - "https://github.com/truecharts/charts/tree/master/charts/stable/notifiarr", - "https://hub.docker.com/r/golift/notifiarr" - ], - "type": "application", - "version": "3.2.0" - }, - "app_metadata": null, - "schema": { - "groups": [ - { - "name": "Container Image", - "description": "Image to be used for container" - }, - { - "name": "General Settings", - "description": "General Deployment Settings" - }, - { - "name": "Workload Settings", - "description": "Workload Settings" - }, - { - "name": "App Configuration", - "description": "App Specific Config Options" - }, - { - "name": "Networking and Services", - "description": "Configure Network and Services for Container" - }, - { - "name": "Storage and Persistence", - "description": "Persist and Share Data that is Separate from the Container" - }, - { - "name": "Ingress", - "description": "Ingress Configuration" - }, - { - "name": "Security and Permissions", - "description": "Configure Security Context and Permissions" - }, - { - "name": "Resources and Devices", - "description": "Specify Resources/Devices to be Allocated to Workload" - }, - { - "name": "Middlewares", - "description": "Traefik Middlewares" - }, - { - "name": "Metrics", - "description": "Metrics" - }, - { - "name": "Addons", - "description": "Addon Configuration" - }, - { - "name": "Backup Configuration", - "description": "Configure Velero Backup Schedule" - }, - { - "name": "Advanced", - "description": "Advanced Configuration" - }, - { - "name": "Postgresql", - "description": "Postgresql" - }, - { - "name": "Documentation", - "description": "Documentation" - } - ], - "portals": { - "open": { - "protocols": [ - "$kubernetes-resource_configmap_tcportal-open_protocol" - ], - "host": [ - "$kubernetes-resource_configmap_tcportal-open_host" - ], - "ports": [ - "$kubernetes-resource_configmap_tcportal-open_port" - ] - } - }, - "questions": [ - { - "variable": "global", - "group": "General Settings", - "label": "Global Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "stopAll", - "label": "Stop All", - "description": "Stops All Running pods and hibernates cnpg", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - }, - { - "variable": "workload", - "group": "Workload Settings", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type (Advanced)", - "schema": { - "type": "string", - "default": "Deployment", - "enum": [ - { - "value": "Deployment", - "description": "Deployment" - }, - { - "value": "DaemonSet", - "description": "DaemonSet" - } - ] - } - }, - { - "variable": "replicas", - "label": "Replicas (Advanced)", - "description": "Set the number of Replicas", - "schema": { - "type": "int", - "show_if": [ - [ - "type", - "!=", - "DaemonSet" - ] - ], - "default": 1 - } - }, - { - "variable": "podSpec", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "containers", - "label": "Containers", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "envList", - "label": "Extra Environment Variables", - "description": "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting...", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string" - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "extraArgs", - "label": "Extra Args", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "arg", - "label": "Arg", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "command", - "label": "Command", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "param", - "label": "Param", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "notifiarr", - "group": "App Configuration", - "label": "Image Environment", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "apikey", - "label": "Notifiarr All API Key", - "description": "Notifiarr All Integrations API key from https://notifiarr.com
    \nNOTE: Use 'admin' as username and your API key as the password
    \nfor your first-time login credentials.
    \nAfter login you must change your password from the UI.\n", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "upstreams", - "label": "Upstreams", - "description": "Controls which IP is written to the web server log file (requestor or x-forwarded-for header). Also allows the x-webauth-user header for proxy authentication. Separate with spaces. The default kubernetes network is pre-filled.", - "schema": { - "type": "list", - "default": [ - "172.16.0.0/16" - ], - "items": [ - { - "variable": "upstreamEntry", - "label": "Upstream", - "description": "Upstream IP or CIDR", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - }, - { - "variable": "TZ", - "label": "Timezone", - "group": "General Settings", - "schema": { - "type": "string", - "default": "America/Los_Angeles", - "$ref": [ - "definitions/timezone" - ], - "enum": [ - { - "value": "Asia/Damascus", - "description": "'Asia/Damascus' timezone" - }, - { - "value": "Asia/Saigon", - "description": "'Asia/Saigon' timezone" - } - ] - } - }, - { - "variable": "podOptions", - "group": "General Settings", - "label": "Global Pod Options (Advanced)", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "expertPodOpts", - "label": "Expert - Pod Options", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hostNetwork", - "label": "Host Networking", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "dnsConfig", - "label": "DNS Configuration", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "options", - "label": "Options", - "schema": { - "type": "list", - "default": [ - { - "name": "ndots", - "value": "1" - } - ], - "items": [ - { - "variable": "optionsEntry", - "label": "Option Entry", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "nameservers", - "label": "Nameservers", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "nsEntry", - "label": "Nameserver Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "searches", - "label": "Searches", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "searchEntry", - "label": "Search Entry", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "imagePullSecretList", - "group": "General Settings", - "label": "Image Pull Secrets", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pullsecretentry", - "label": "Pull Secret", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "data", - "label": "Data", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "registry", - "label": "Registry", - "schema": { - "type": "string", - "required": true, - "default": "https://index.docker.io/v1/" - } - }, - { - "variable": "username", - "label": "Username", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "schema": { - "type": "string", - "required": true, - "private": true, - "default": "" - } - }, - { - "variable": "email", - "label": "Email", - "schema": { - "type": "string", - "required": true, - "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)" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "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": 5454, - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "serviceexpert", - "group": "Networking and Services", - "label": "Show Expert Config", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "scaleExternalInterface", - "description": "Add External Interfaces", - "label": "Add external Interfaces", - "group": "Networking", - "schema": { - "type": "list", - "items": [ - { - "variable": "interfaceConfiguration", - "description": "Interface Configuration", - "label": "Interface Configuration", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "normalize/interfaceConfiguration" - ], - "attrs": [ - { - "variable": "hostInterface", - "description": "Please Specify Host Interface", - "label": "Host Interface", - "schema": { - "type": "string", - "required": true, - "$ref": [ - "definitions/interface" - ], - "enum": [] - } - }, - { - "variable": "ipam", - "description": "Define how IP Address will be managed", - "label": "IP Address Management", - "schema": { - "additional_attrs": true, - "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" - } - ] - } - }, - { - "variable": "staticIPConfigurations", - "label": "Static IP Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "items": [ - { - "variable": "staticIP", - "label": "Static IP", - "schema": { - "type": "ipaddr", - "cidr": true - } - } - ] - } - }, - { - "variable": "staticRoutes", - "label": "Static Routes", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "=", - "static" - ] - ], - "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": "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": "config", - "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": "pvc", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - }, - { - "value": "iscsi", - "description": "iSCSI Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size quotum of Storage (Do NOT REDUCE after installation)", - "description": "This value can ONLY be INCREASED after the installation", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "persistenceList", - "label": "Additional App Storage", - "group": "Storage and Persistence", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "persistenceListEntry", - "label": "Custom Storage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the storage", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "type", - "label": "Type of Storage", - "description": "Sets the persistence type, Anything other than PVC could break rollback!", - "schema": { - "type": "string", - "default": "hostPath", - "enum": [ - { - "value": "pvc", - "description": "PVC" - }, - { - "value": "hostPath", - "description": "Host Path" - }, - { - "value": "emptyDir", - "description": "emptyDir" - }, - { - "value": "nfs", - "description": "NFS Share" - } - ] - } - }, - { - "variable": "server", - "label": "NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "path", - "label": "Path on NFS Server", - "schema": { - "show_if": [ - [ - "type", - "=", - "nfs" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "iscsi", - "label": "iSCSI Options", - "schema": { - "show_if": [ - [ - "type", - "=", - "iscsi" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "targetPortal", - "label": "targetPortal", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "iqn", - "label": "iqn", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "lun", - "label": "lun", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "authSession", - "label": "authSession", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "authDiscovery", - "label": "authDiscovery", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "username", - "label": "username", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "password", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "usernameInitiator", - "label": "usernameInitiator", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "passwordInitiator", - "label": "passwordInitiator", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "autoPermissions", - "label": "Automatic Permissions Configuration", - "description": "Automatically set permissions", - "schema": { - "show_if": [ - [ - "type", - "!=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "chown", - "label": "Run CHOWN", - "description": "It will run CHOWN on the path with the given fsGroup\n", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "chmod", - "label": "Run CHMOD", - "description": "It will run CHMOD on the path with the given value
    \nFormat should be 3 digits, e.g. 770\n", - "schema": { - "type": "string", - "valid_chars": "[0-9]{3}", - "default": "" - } - }, - { - "variable": "recursive", - "label": "Recursive", - "description": "It will run CHOWN and CHMOD recursively\n", - "schema": { - "type": "boolean", - "default": false - } - } - ] - } - } - ] - } - }, - { - "variable": "readOnly", - "label": "Read Only", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "show_if": [ - [ - "type", - "=", - "hostPath" - ] - ], - "type": "hostpath" - } - }, - { - "variable": "mountPath", - "label": "Mount Path", - "description": "Path inside the container the storage is mounted", - "schema": { - "type": "string", - "default": "", - "required": true, - "valid_chars": "^\\/([a-zA-Z0-9._-]+(\\s?[a-zA-Z0-9._-]+|\\/?))+$" - } - }, - { - "variable": "medium", - "label": "EmptyDir Medium", - "schema": { - "show_if": [ - [ - "type", - "=", - "emptyDir" - ] - ], - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "Memory", - "description": "Memory" - } - ] - } - }, - { - "variable": "size", - "label": "Size Quotum of Storage", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "256Gi" - } - }, - { - "variable": "storageClass", - "label": "storageClass (Advanced)", - "description": "sets the storageClass to something other than iX default. Only for advanced usecases!", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "static", - "label": "Static Fixed PVC Bindings (Experimental)", - "description": "Link a PVC to a specific storage location", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "mode", - "label": "mode", - "description": "disabled: use normal dynamic PVCs\nsmb: connect to an SMB share\nnfs: connect to an NFS share\n", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "smb", - "description": "smb" - }, - { - "value": "nfs", - "description": "nfs" - } - ] - } - }, - { - "variable": "server", - "label": "Server", - "description": "server to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "myserver" - } - }, - { - "variable": "share", - "label": "Share", - "description": "share to connect to", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "!=", - "disabled" - ] - ], - "default": "/myshare" - } - }, - { - "variable": "user", - "label": "User", - "description": "connecting user", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "myuser" - } - }, - { - "variable": "domain", - "label": "Domain", - "description": "user domain", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - }, - { - "variable": "password", - "label": "Password", - "description": "connecting password", - "schema": { - "type": "string", - "show_if": [ - [ - "mode", - "=", - "smb" - ] - ], - "default": "" - } - } - ] - } - }, - { - "variable": "volumeSnapshots", - "label": "Volume Snapshots (Experimental)", - "description": "Add an entry to the list to force creation of a volumeSnapshot of this PVC", - "schema": { - "show_if": [ - [ - "type", - "=", - "pvc" - ] - ], - "type": "list", - "default": [], - "items": [ - { - "variable": "volumeSnapshotEntry", - "label": "Custom volumeSnapshot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "description": "WARNING: renaming this, means deletion of the snapshot with the old name!", - "schema": { - "type": "string", - "default": "mysnapshot", - "required": true - } - }, - { - "variable": "volumeSnapshotClassName", - "label": "volumeSnapshot Class Name (Advanced)", - "description": "For use with PVCs using a non-default storageClass", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "", - "group": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "main", - "label": "Main Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name (Optional)", - "description": "Defaults to chart name", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description (Optional)", - "description": "Defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "icon", - "label": "Icon (Optional)", - "description": "Defaults to chart icon", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "widget", - "label": "Widget Settings", - "schema": { - "type": "dict", - "additional_attrs": true, - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "attrs": [ - { - "variable": "enabled", - "label": "Enable Widget", - "description": "When disabled all widget annotations are skipped.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "custom", - "label": "Options", - "schema": { - "type": "dict", - "additional_attrs": true, - "attrs": [ - { - "variable": "key", - "label": "API-key (key)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "customkv", - "label": "Custom Options", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "option", - "label": "Option", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingressList", - "label": "Add Manual Custom Ingresses", - "group": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressListEntry", - "label": "Custom Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - }, - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "ingressClassName", - "label": "IngressClass Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - }, - { - "variable": "overrideService", - "label": "Linked Service", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Service Name", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "port", - "label": "Service Port", - "schema": { - "type": "int" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Secret (Advanced)", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - }, - { - "variable": "homepage", - "label": "Homepage", - "description": "Connect ingress with Homepage", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "name", - "label": "Name", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "description", - "label": "Description", - "description": "defaults to chart description", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "group", - "label": "Group", - "schema": { - "type": "string", - "required": true, - "default": "default", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "securityContext", - "group": "Security and Permissions", - "label": "Security Context", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "container", - "label": "Container", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "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": "PUID", - "label": "Process User ID - PUID", - "description": "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps", - "schema": { - "type": "int", - "show_if": [ - [ - "runAsUser", - "=", - 0 - ] - ], - "default": 568 - } - }, - { - "variable": "UMASK", - "label": "UMASK", - "description": "When supported by the container, this sets the UMASK for the App. Not supported by all Apps", - "schema": { - "type": "string", - "default": "0022" - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "privileged", - "label": "Privileged mode", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "readOnlyRootFilesystem", - "label": "ReadOnly Root Filesystem", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - } - ] - } - }, - { - "variable": "pod", - "label": "Pod", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "fsGroupChangePolicy", - "label": "When should we take ownership?", - "schema": { - "type": "string", - "default": "OnRootMismatch", - "enum": [ - { - "value": "OnRootMismatch", - "description": "OnRootMismatch" - }, - { - "value": "Always", - "description": "Always" - } - ] - } - }, - { - "variable": "supplementalGroups", - "label": "Supplemental Groups", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "supplementalGroupsEntry", - "label": "Supplemental Group", - "schema": { - "type": "int" - } - } - ] - } - }, - { - "variable": "fsGroup", - "label": "fsGroup", - "description": "The group that should own ALL storage.", - "schema": { - "type": "int", - "default": 568 - } - } - ] - } - } - ] - } - }, - { - "variable": "resources", - "group": "Resources and Devices", - "label": "Resource Limits", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "limits", - "label": "Advanced Limit Resource Consumption", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "4000m", - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "8Gi", - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - }, - { - "variable": "intel.com/i915", - "label": "Add Intel i915 GPUs", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "nvidia.com/gpu", - "label": "Add NVIDIA GPUs (Experimental)", - "schema": { - "type": "int", - "default": 0 - } - }, - { - "variable": "amd.com/gpu", - "label": "Add AMD GPUs", - "schema": { - "type": "int", - "default": 0 - } - } - ] - } - }, - { - "variable": "requests", - "label": "Minimum Resources Required (request)", - "schema": { - "additional_attrs": true, - "type": "dict", - "hidden": true, - "attrs": [ - { - "variable": "cpu", - "label": "CPU", - "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "10m", - "hidden": true, - "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$" - } - }, - { - "variable": "memory", - "label": "RAM", - "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation", - "schema": { - "type": "string", - "default": "50Mi", - "hidden": true, - "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$" - } - } - ] - } - } - ] - } - }, - { - "variable": "deviceList", - "label": "Mount USB Devices", - "group": "Resources and Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "deviceListEntry", - "label": "Device", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable the Storage", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "type", - "label": "(Advanced) Type of Storage", - "description": "Sets the persistence type", - "schema": { - "type": "string", - "default": "device", - "hidden": true - } - }, - { - "variable": "readOnly", - "label": "readOnly", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "hostPath", - "label": "Host Device Path", - "description": "Path to the device on the host system", - "schema": { - "type": "path" - } - }, - { - "variable": "mountPath", - "label": "Container Device Path", - "description": "Path inside the container the device is mounted", - "schema": { - "type": "string", - "default": "/dev/ttyACM0" - } - } - ] - } - } - ] - } - }, - { - "variable": "scaleGPU", - "label": "GPU Configuration", - "group": "Resources and Devices", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "scaleGPUEntry", - "label": "GPU", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "gpu", - "label": "Select GPU", - "schema": { - "additional_attrs": true, - "type": "dict", - "$ref": [ - "definitions/gpuConfiguration" - ], - "attrs": [] - } - }, - { - "variable": "workaround", - "label": "Workaround", - "schema": { - "type": "string", - "default": "workaround", - "hidden": true - } - } - ] - } - } - ] - } - }, - { - "variable": "networkPolicy", - "group": "Advanced", - "label": "(Advanced) Network Policy", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "netPolicyEntry", - "label": "Network Policy Entry", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true, - "default": "" - } - }, - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "policyType", - "label": "Policy Type", - "schema": { - "type": "string", - "default": "", - "enum": [ - { - "value": "", - "description": "Default" - }, - { - "value": "ingress", - "description": "Ingress" - }, - { - "value": "egress", - "description": "Egress" - }, - { - "value": "ingress-egress", - "description": "Ingress and Egress" - } - ] - } - }, - { - "variable": "egress", - "label": "Egress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "egressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "to", - "label": "To", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "toEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "ingressEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "from", - "label": "From", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "fromEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "ipBlock", - "label": "IP Block", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "cidr", - "label": "CIDR", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "except", - "label": "Except", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "exceptint", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - }, - { - "variable": "namespaceSelector", - "label": "Namespace Selector", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "podSelector", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "matchExpressions", - "label": "Match Expressions", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "expressionEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "key", - "label": "Key", - "schema": { - "type": "string" - } - }, - { - "variable": "operator", - "label": "Operator", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "In", - "description": "In" - }, - { - "value": "NotIn", - "description": "NotIn" - }, - { - "value": "Exists", - "description": "Exists" - }, - { - "value": "DoesNotExist", - "description": "DoesNotExist" - } - ] - } - }, - { - "variable": "values", - "label": "Values", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "value", - "label": "", - "schema": { - "type": "string" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ports", - "label": "Ports", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "portsEntry", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int" - } - }, - { - "variable": "endPort", - "label": "End Port", - "schema": { - "type": "int" - } - }, - { - "variable": "protocol", - "label": "Protocol", - "schema": { - "type": "string", - "default": "TCP", - "enum": [ - { - "value": "TCP", - "description": "TCP" - }, - { - "value": "UDP", - "description": "UDP" - }, - { - "value": "SCTP", - "description": "SCTP" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "addons", - "group": "Addons", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "Codeserver", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "service", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Service Type", - "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer", - "schema": { - "type": "string", - "default": "LoadBalancer", - "enum": [ - { - "value": "NodePort", - "description": "Deprecated CHANGE THIS" - }, - { - "value": "ClusterIP", - "description": "ClusterIP" - }, - { - "value": "LoadBalancer", - "description": "LoadBalancer" - } - ] - } - }, - { - "variable": "loadBalancerIP", - "label": "LoadBalancer IP", - "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB", - "schema": { - "show_if": [ - [ - "type", - "=", - "LoadBalancer" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "ports", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "codeserver", - "label": "", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "port", - "label": "Port", - "schema": { - "type": "int", - "default": 36107 - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "ingress", - "label": "Ingress", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enable Ingress", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "hosts", - "label": "Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "hostEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "host", - "label": "HostName", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "paths", - "label": "Paths", - "schema": { - "type": "list", - "default": [ - { - "path": "/", - "pathType": "Prefix" - } - ], - "items": [ - { - "variable": "pathEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "path", - "label": "Path", - "schema": { - "type": "string", - "required": true, - "default": "/" - } - }, - { - "variable": "pathType", - "label": "Path Type", - "schema": { - "type": "string", - "required": true, - "default": "Prefix" - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "integrations", - "label": "Integrations", - "description": "Connect ingress with other charts", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "traefik", - "label": "Traefik", - "description": "Connect ingress with Traefik", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "allowCors", - "label": "Allow Cross Origin Requests (advanced)", - "schema": { - "type": "boolean", - "default": false, - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - }, - { - "variable": "entrypoints", - "label": "Entrypoints", - "schema": { - "type": "list", - "default": [ - "websecure" - ], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "entrypoint", - "label": "Entrypoint", - "schema": { - "type": "string" - } - } - ] - } - }, - { - "variable": "middlewares", - "label": "Middlewares", - "schema": { - "type": "list", - "default": [], - "show_if": [ - [ - "enabled", - "=", - true - ] - ], - "items": [ - { - "variable": "middleware", - "label": "Middleware", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "name", - "schema": { - "type": "string", - "default": "", - "required": true - } - }, - { - "variable": "namespace", - "label": "namespace (optional)", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "certManager", - "label": "certManager", - "description": "Connect ingress with certManager", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "enabled", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "certificateIssuer", - "label": "certificateIssuer", - "description": "defaults to chartname", - "schema": { - "type": "string", - "default": "", - "show_if": [ - [ - "enabled", - "=", - true - ] - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "advanced", - "label": "Show Advanced Settings", - "description": "Advanced settings are not covered by TrueCharts Support", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "ingressClassName", - "label": "(Advanced/Optional) IngressClass Name", - "schema": { - "type": "string", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": "" - } - }, - { - "variable": "tls", - "label": "TLS-Settings", - "schema": { - "type": "list", - "show_if": [ - [ - "advanced", - "=", - true - ] - ], - "default": [], - "items": [ - { - "variable": "tlsEntry", - "label": "Host", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "hosts", - "label": "Certificate Hosts", - "schema": { - "type": "list", - "default": [], - "items": [ - { - "variable": "host", - "label": "Host", - "schema": { - "type": "string", - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "certificateIssuer", - "label": "Use Cert-Manager clusterIssuer", - "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "clusterCertificate", - "label": "Cluster Certificate (Advanced)", - "description": "Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.", - "schema": { - "type": "string", - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "default": "" - } - }, - { - "variable": "secretName", - "label": "Use Custom Certificate Secret (Advanced)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "string", - "default": "" - } - }, - { - "variable": "scaleCert", - "label": "Use TrueNAS SCALE Certificate (Deprecated)", - "schema": { - "show_if": [ - [ - "certificateIssuer", - "=", - "" - ] - ], - "type": "int", - "$ref": [ - "definitions/certificate" - ], - "enum": [ - { - "value": null, - "description": "No Certificate" - } - ], - "default": null, - "null": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "envList", - "label": "Codeserver Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "netshoot", - "label": "Netshoot", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "enabled", - "label": "Enabled", - "schema": { - "type": "boolean", - "default": false, - "show_subquestions_if": true, - "subquestions": [ - { - "variable": "envList", - "label": "Netshoot Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "vpn", - "label": "VPN", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "type", - "label": "Type", - "schema": { - "type": "string", - "default": "disabled", - "enum": [ - { - "value": "disabled", - "description": "disabled" - }, - { - "value": "gluetun", - "description": "Gluetun" - }, - { - "value": "tailscale", - "description": "Tailscale" - }, - { - "value": "openvpn", - "description": "OpenVPN (Deprecated)" - }, - { - "value": "wireguard", - "description": "Wireguard (Deprecated)" - } - ] - } - }, - { - "variable": "openvpn", - "label": "OpenVPN Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "openvpn" - ] - ], - "attrs": [ - { - "variable": "username", - "label": "Authentication Username (Optional)", - "description": "Authentication Username, Optional", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "password", - "label": "Authentication Password", - "description": "Authentication Credentials", - "schema": { - "type": "string", - "show_if": [ - [ - "username", - "!=", - "" - ] - ], - "default": "", - "required": true - } - } - ] - } - }, - { - "variable": "tailscale", - "label": "Tailscale Settings", - "schema": { - "additional_attrs": true, - "type": "dict", - "show_if": [ - [ - "type", - "=", - "tailscale" - ] - ], - "attrs": [ - { - "variable": "authkey", - "label": "Authentication Key", - "description": "Provide an auth key to automatically authenticate the node as your user account.", - "schema": { - "type": "string", - "private": true, - "default": "" - } - }, - { - "variable": "auth_once", - "label": "Auth Once", - "description": "Only attempt to log in if not already logged in.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "variable": "accept_dns", - "label": "Accept DNS", - "description": "Accept DNS configuration from the admin console.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "userspace", - "label": "Userspace", - "description": "Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "variable": "routes", - "label": "Routes", - "description": "Expose physical subnet routes to your entire Tailscale network.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "dest_ip", - "label": "Destination IP", - "description": "Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "sock5_server", - "label": "Sock5 Server", - "description": "The address on which to listen for SOCKS5 proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "outbound_http_proxy_listen", - "label": "Outbound HTTP Proxy Listen", - "description": "The address on which to listen for HTTP proxying into the tailscale net.", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "extra_args", - "label": "Extra Args", - "description": "Extra Args", - "schema": { - "type": "string", - "default": "" - } - }, - { - "variable": "daemon_extra_args", - "label": "Tailscale Daemon Extra Args", - "description": "Tailscale Daemon Extra Args", - "schema": { - "type": "string", - "default": "" - } - } - ] - } - }, - { - "variable": "killSwitch", - "label": "Enable Killswitch", - "schema": { - "type": "boolean", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": true - } - }, - { - "variable": "excludedNetworks_IPv4", - "label": "Killswitch Excluded IPv4 networks", - "description": "List of Killswitch Excluded IPv4 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv4", - "label": "IPv4 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "excludedNetworks_IPv6", - "label": "Killswitch Excluded IPv6 networks", - "description": "List of Killswitch Excluded IPv6 Addresses", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "networkv6", - "label": "IPv6 Network", - "schema": { - "type": "string", - "required": true - } - } - ] - } - }, - { - "variable": "configFile", - "label": "VPN Config File Location", - "schema": { - "type": "string", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": "" - } - }, - { - "variable": "envList", - "label": "VPN Environment Variables", - "schema": { - "type": "list", - "show_if": [ - [ - "type", - "!=", - "disabled" - ] - ], - "default": [], - "items": [ - { - "variable": "envItem", - "label": "Environment Variable", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "name", - "label": "Name", - "schema": { - "type": "string", - "required": true - } - }, - { - "variable": "value", - "label": "Value", - "schema": { - "type": "string", - "required": true, - "max_length": 10240 - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "variable": "docs", - "group": "Documentation", - "label": "Please read the documentation at https://truecharts.org", - "description": "Please read the documentation at
    https://truecharts.org", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDocs", - "label": "I have checked the documentation", - "schema": { - "type": "boolean", - "default": true - } - } - ] - } - }, - { - "variable": "donateNag", - "group": "Documentation", - "label": "Please consider supporting TrueCharts, see https://truecharts.org/sponsor", - "description": "Please consider supporting TrueCharts, see
    https://truecharts.org/sponsor", - "schema": { - "additional_attrs": true, - "type": "dict", - "attrs": [ - { - "variable": "confirmDonate", - "label": "I have considered donating", - "schema": { - "type": "boolean", - "default": true, - "hidden": true - } - } - ] - } - } - ] - }, - "app_readme": "

    This is the unified client for Notifiarr.com. The client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.

    \n

    This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/notifiarr

    \n
    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    ", - "detailed_readme": "
    \n

    title: README

    \n

    General Info

    \n

    TrueCharts can be installed as both normal Helm Charts or as Apps on TrueNAS SCALE.\nHowever only installations using the TrueNAS SCALE Apps system are supported.

    \n

    For more information about this App, please check the docs on the TrueCharts website

    \n

    This chart is not maintained by the upstream project and any issues with the chart should be raised here

    \n

    Support

    \n\n
    \n

    Sponsor TrueCharts

    \n

    TrueCharts can only exist due to the incredible effort of our staff.\nPlease consider making a donation or contributing back to the project any way you can!

    \n

    All Rights Reserved - The TrueCharts Project

    ", - "changelog": "
    \n

    title: Changelog

    \n

    for the complete changelog, please refer to the website

    \n

    Important:

    \n

    notifiarr-3.1.11 (2024-02-03)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.30@19ad5ec by renovate (#17804)
    • \n
    \n

    notifiarr-3.1.10 (2024-01-26)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.29@d7c41a3 by renovate (#17545)
    • \n
    \n

    notifiarr-3.1.9 (2024-01-21)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.28@918b4c5 by renovate (#17478)
    • \n
    \n

    notifiarr-3.1.8 (2024-01-21)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.26@24c98f7 by renovate (#17409)
    • \n
    \n

    notifiarr-3.1.7 (2024-01-21)

    \n

    Chore

    \n
      \n
    • update metadata in chart.yaml (#17457)
    • \n
    \n

    notifiarr-3.1.6 (2024-01-09)

    \n

    Chore

    \n
      \n
    • update container image common to v17.2.22@e7c9056 by renovate (#16986)
    • \n
    \n

    notifiarr-3.1.5 (2024-01-02)

    \n

    Chore

    \n
      \n
    • force bump to ensure up-to-date catalogs
    • \n
    \n

    notifiarr-3.1.4 (2024-01-01)

    \n

    Chore

    \n
      \n
    • \n

      increase common version for oci fixes

      \n
    • \n
    • \n

      remove non-existent template refs (#16738)

      \n
    • \n
    \n

    notifiarr-3.1.3 (2024-01-01)

    \n

    Chore

    \n
      \n
    • \n

      bump all charts for OCI test push

      \n
    • \n
    • \n

      move everything to consume OCI-hosted common-chart dependency

      \n
    • \n
    • \n

      update container image common to v17.2.19@4ebb688 by renovate (#16733)

      \n
    • \n
    • \n

      update container image common to v17.2.18@085ba3c by renovate (#16732)

      \n
    • \n
    " - } -} \ No newline at end of file diff --git a/stable/notifiarr/item.yaml b/stable/notifiarr/item.yaml deleted file mode 100644 index 4d65b828f1e..00000000000 --- a/stable/notifiarr/item.yaml +++ /dev/null @@ -1,4 +0,0 @@ -icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/notifiarr.webp -categories: - - MediaApp-Other -screenshots: []