From d53181038c5c1042d93e195131a1b8197600825a Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sat, 3 Feb 2024 10:54:19 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/omada-controller/13.0.10/CHANGELOG.md | 99 + stable/omada-controller/13.0.10/Chart.yaml | 36 + stable/omada-controller/13.0.10/README.md | 28 + .../omada-controller/13.0.10/app-changelog.md | 9 + stable/omada-controller/13.0.10/app-readme.md | 8 + .../13.0.10/charts/common-17.2.29.tgz | Bin 0 -> 98038 bytes .../omada-controller/13.0.10/ix_values.yaml | 84 + .../omada-controller/13.0.10/questions.yaml | 3581 +++++++++++++++++ .../13.0.10/templates/NOTES.txt | 1 + .../13.0.10/templates/common.yaml | 9 + stable/omada-controller/13.0.10/values.yaml | 0 11 files changed, 3855 insertions(+) create mode 100644 stable/omada-controller/13.0.10/CHANGELOG.md create mode 100644 stable/omada-controller/13.0.10/Chart.yaml create mode 100644 stable/omada-controller/13.0.10/README.md create mode 100644 stable/omada-controller/13.0.10/app-changelog.md create mode 100644 stable/omada-controller/13.0.10/app-readme.md create mode 100644 stable/omada-controller/13.0.10/charts/common-17.2.29.tgz create mode 100644 stable/omada-controller/13.0.10/ix_values.yaml create mode 100644 stable/omada-controller/13.0.10/questions.yaml create mode 100644 stable/omada-controller/13.0.10/templates/NOTES.txt create mode 100644 stable/omada-controller/13.0.10/templates/common.yaml create mode 100644 stable/omada-controller/13.0.10/values.yaml diff --git a/stable/omada-controller/13.0.10/CHANGELOG.md b/stable/omada-controller/13.0.10/CHANGELOG.md new file mode 100644 index 00000000000..b6830770b07 --- /dev/null +++ b/stable/omada-controller/13.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +--- +title: Changelog +--- + +**Important:** +*for the complete changelog, please refer to the website* + + + +## [omada-controller-13.0.10](https://github.com/truecharts/charts/compare/omada-controller-13.0.9...omada-controller-13.0.10) (2024-02-03) + +### Chore + + + +- update container image mbentley/omada-controller to 5.13[@a53f929](https://github.com/a53f929) by renovate ([#17781](https://github.com/truecharts/charts/issues/17781)) + + +## [omada-controller-13.0.9](https://github.com/truecharts/charts/compare/omada-controller-13.0.8...omada-controller-13.0.9) (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)) + + +## [omada-controller-13.0.8](https://github.com/truecharts/charts/compare/omada-controller-13.0.7...omada-controller-13.0.8) (2024-01-26) + +### Chore + + + +- update container image mbentley/omada-controller to 5.13[@f1e50b9](https://github.com/f1e50b9) by renovate ([#17543](https://github.com/truecharts/charts/issues/17543)) + + +## [omada-controller-13.0.7](https://github.com/truecharts/charts/compare/omada-controller-13.0.6...omada-controller-13.0.7) (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)) + + +## [omada-controller-13.0.6](https://github.com/truecharts/charts/compare/omada-controller-13.0.5...omada-controller-13.0.6) (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)) + + +## [omada-controller-13.0.5](https://github.com/truecharts/charts/compare/omada-controller-13.0.4...omada-controller-13.0.5) (2024-01-21) + +### Chore + + + +- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457)) + + +## [omada-controller-13.0.4](https://github.com/truecharts/charts/compare/omada-controller-13.0.3...omada-controller-13.0.4) (2024-01-21) + +### Chore + + + +- update container image mbentley/omada-controller to 5.13[@eb41821](https://github.com/eb41821) by renovate ([#17385](https://github.com/truecharts/charts/issues/17385)) + + +## [omada-controller-13.0.3](https://github.com/truecharts/charts/compare/omada-controller-13.0.2...omada-controller-13.0.3) (2024-01-15) + +### Chore + + + +- update container image mbentley/omada-controller to 5.13[@b6a4ced](https://github.com/b6a4ced) by renovate ([#17264](https://github.com/truecharts/charts/issues/17264)) + + +## [omada-controller-13.0.2](https://github.com/truecharts/charts/compare/omada-controller-13.0.1...omada-controller-13.0.2) (2024-01-15) + +### Chore + + + +- update container image mbentley/omada-controller to 5.13[@4948bcb](https://github.com/4948bcb) by renovate ([#17239](https://github.com/truecharts/charts/issues/17239)) + + +## [omada-controller-13.0.1](https://github.com/truecharts/charts/compare/omada-controller-13.0.0...omada-controller-13.0.1) (2024-01-14) + +### Chore + + + +- update container image mbentley/omada-controller to 5.13[@fe50b47](https://github.com/fe50b47) by renovate ([#17166](https://github.com/truecharts/charts/issues/17166)) + + diff --git a/stable/omada-controller/13.0.10/Chart.yaml b/stable/omada-controller/13.0.10/Chart.yaml new file mode 100644 index 00000000000..ef190b3dbb5 --- /dev/null +++ b/stable/omada-controller/13.0.10/Chart.yaml @@ -0,0 +1,36 @@ +annotations: + max_scale_version: 23.10.2 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: media + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: stable +apiVersion: v2 +appVersion: 5.13.0 +dependencies: + - name: common + version: 17.2.29 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Omada is a SDN tool for TP-Link Omada hardware +home: https://truecharts.org/charts/stable/omada-controller +icon: https://truecharts.org/img/hotlink-ok/chart-icons/omada-controller.png +keywords: + - omada-controller +kubeVersion: ">=1.24.0-0" +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: omada-controller +sources: + - https://github.com/mbentley/docker-omada-controller + - https://github.com/truecharts/charts/tree/master/charts/stable/omada-controller + - https://hub.docker.com/r/mbentley/omada-controller +type: application +version: 13.0.10 diff --git a/stable/omada-controller/13.0.10/README.md b/stable/omada-controller/13.0.10/README.md new file mode 100644 index 00000000000..0bb3cf221e2 --- /dev/null +++ b/stable/omada-controller/13.0.10/README.md @@ -0,0 +1,28 @@ +--- +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/omada-controller) + +**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/omada-controller/13.0.10/app-changelog.md b/stable/omada-controller/13.0.10/app-changelog.md new file mode 100644 index 00000000000..7a5567e3758 --- /dev/null +++ b/stable/omada-controller/13.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [omada-controller-13.0.10](https://github.com/truecharts/charts/compare/omada-controller-13.0.9...omada-controller-13.0.10) (2024-02-03) + +### Chore + + + +- update container image mbentley/omada-controller to 5.13[@a53f929](https://github.com/a53f929) by renovate ([#17781](https://github.com/truecharts/charts/issues/17781)) \ No newline at end of file diff --git a/stable/omada-controller/13.0.10/app-readme.md b/stable/omada-controller/13.0.10/app-readme.md new file mode 100644 index 00000000000..f96c4abc38c --- /dev/null +++ b/stable/omada-controller/13.0.10/app-readme.md @@ -0,0 +1,8 @@ +Omada is a SDN tool for TP-Link Omada hardware + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/omada-controller](https://truecharts.org/charts/stable/omada-controller) + +--- + +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/omada-controller/13.0.10/charts/common-17.2.29.tgz b/stable/omada-controller/13.0.10/charts/common-17.2.29.tgz new file mode 100644 index 0000000000000000000000000000000000000000..32aa9351f147fbd4659b7948d068b57287f74904 GIT binary patch literal 98038 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 literal 0 HcmV?d00001 diff --git a/stable/omada-controller/13.0.10/ix_values.yaml b/stable/omada-controller/13.0.10/ix_values.yaml new file mode 100644 index 00000000000..8be09b6f67b --- /dev/null +++ b/stable/omada-controller/13.0.10/ix_values.yaml @@ -0,0 +1,84 @@ +image: + repository: mbentley/omada-controller + tag: 5.13@sha256:a53f929db8dda5ed1e1d5b49641e2ebeec6f34119113fd30f24b16163c5b63e4 + pullPolicy: IfNotPresent +service: + main: + ports: + main: + protocol: https + port: 8043 + comm: + enabled: true + ports: + comm: + protocol: https + enabled: true + port: 8843 + omada-tcp: + enabled: true + ports: + omada-tcp1: + enabled: true + port: 29811 + targetPort: 29811 + omada-tcp2: + enabled: true + port: 29812 + targetPort: 29812 + omada-tcp3: + enabled: true + port: 29813 + targetPort: 29813 + omada-tcp4: + enabled: true + port: 29814 + targetPort: 29814 + omada-udp: + enabled: true + ports: + omada-udp1: + enabled: true + protocol: udp + port: 29810 + targetPort: 29810 +ingress: + comm: + autoLink: true +persistence: + data: + enabled: true + mountPath: /opt/tplink/EAPController/data + work: + enabled: true + mountPath: /opt/tplink/EAPController/work +portal: + open: + enabled: true +securityContext: + container: + readOnlyRootFilesystem: false + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 +workload: + main: + podSpec: + containers: + main: + env: + MANAGE_HTTPS_PORT: "{{ .Values.service.main.ports.main.port }}" + PORTAL_HTTPS_PORT: "{{ .Values.service.comm.ports.comm.port }}" + probes: + startup: + path: /api/info + httpHeaders: + Host: kube.internal.health + liveness: + path: /api/info + httpHeaders: + Host: kube.internal.health + readiness: + path: /api/info + httpHeaders: + Host: kube.internal.health diff --git a/stable/omada-controller/13.0.10/questions.yaml b/stable/omada-controller/13.0.10/questions.yaml new file mode 100644 index 00000000000..576a8345968 --- /dev/null +++ b/stable/omada-controller/13.0.10/questions.yaml @@ -0,0 +1,3581 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: 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: 8043 + required: true + - variable: comm + label: Omada Controller User HTTPS portal + description: Omada Controller User HTTPS portal + 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: comm + label: TCP 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: 8843 + required: true + - variable: omada-tcp + label: Omada TCP + description: Omada TCP + 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: omada-tcp1 + label: Omada TCP 1 + description: Omada Controller or EAP Discovery Utility manages Omada devices before Omada Controller v5.x. + 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: 29811 + required: true + - variable: omada-tcp2 + label: Omada TCP 2 + description: Omada Controller or EAP Discovery Utility manages Omada devices before Omada Controller v5.x. + 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: 29812 + required: true + - variable: omada-tcp3 + label: Omada TCP 3 + description: Omada Controller upgrades Omada devices before Omada Controller v5.x. + 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: 29813 + required: true + - variable: omada-tcp4 + label: Omada TCP 4 + description: Omada Controller or EAP Discovery Utility adopts Omada devices since Omada Controller v5.x. + 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: 29814 + required: true + - variable: omada-udp + label: Omada UDP + description: Omada UDP + 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: omada-udp1 + label: Omada UDP 1 + description: Omada Controller or EAP Discovery Utility discovers Omada devices. + 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: 29810 + 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: data + label: App data Storage + description: Stores the Application data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: work + label: App working Storage + description: Stores the Application data between resets. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: comm + label: Comm Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true +# - variable: 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/omada-controller/13.0.10/templates/NOTES.txt b/stable/omada-controller/13.0.10/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/stable/omada-controller/13.0.10/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/stable/omada-controller/13.0.10/templates/common.yaml b/stable/omada-controller/13.0.10/templates/common.yaml new file mode 100644 index 00000000000..3c921cfd439 --- /dev/null +++ b/stable/omada-controller/13.0.10/templates/common.yaml @@ -0,0 +1,9 @@ +{{/* Render the templates */}} + +{{/* +The old behavior of always running on port 443 seams to have changed upstream. The +current upstream behavior is to not allow the port to be changed (without re-install) +after setup. +*/}} + +{{ include "tc.v1.common.loader.all" . }} diff --git a/stable/omada-controller/13.0.10/values.yaml b/stable/omada-controller/13.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d