diff --git a/dev/ollama/0.0.2/CHANGELOG.md b/dev/ollama/0.0.2/CHANGELOG.md
new file mode 100644
index 0000000..62347fc
--- /dev/null
+++ b/dev/ollama/0.0.2/CHANGELOG.md
@@ -0,0 +1,13 @@
+---
+title: Changelog
+---
+
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+## [ollama-0.0.2](https://github.com/truecharts/charts/compare/ollama-0.0.1...ollama-0.0.2) (2024-01-10)
+
+
+## [ollama-0.0.1]ollama-0.0.1 (2024-01-09)
\ No newline at end of file
diff --git a/dev/ollama/0.0.2/Chart.yaml b/dev/ollama/0.0.2/Chart.yaml
new file mode 100644
index 0000000..78da5f0
--- /dev/null
+++ b/dev/ollama/0.0.2/Chart.yaml
@@ -0,0 +1,38 @@
+kubeVersion: ">=1.24.0-0"
+apiVersion: v2
+name: ollama
+version: 0.0.2
+appVersion: 0.1.18
+description: Get up and running with large language models locally.
+home: https://truecharts.org/charts/incubator/ollama
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/ollama.png
+deprecated: false
+sources:
+ - https://github.com/truecharts/charts/tree/master/charts/incubator/ollama
+ - https://ghcr.io/ollama-webui/ollama-webui
+ - https://github.com/jmorganca/ollama
+ - https://github.com/ollama-webui/ollama-webui
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+keywords:
+ - ollama
+ - language-models
+dependencies:
+ - name: common
+ version: 17.2.21
+ repository: https://library-charts.truecharts.org
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+annotations:
+ max_scale_version: 23.10.2
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: ai
+ truecharts.org/max_helm_version: "3.13"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: incubator
+type: application
diff --git a/dev/ollama/0.0.2/README.md b/dev/ollama/0.0.2/README.md
new file mode 100644
index 0000000..a416ebc
--- /dev/null
+++ b/dev/ollama/0.0.2/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/incubator/ollama)
+
+**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/dev/ollama/0.0.2/app-changelog.md b/dev/ollama/0.0.2/app-changelog.md
new file mode 100644
index 0000000..353916c
--- /dev/null
+++ b/dev/ollama/0.0.2/app-changelog.md
@@ -0,0 +1,3 @@
+
+
+## [ollama-0.0.2](https://github.com/truecharts/charts/compare/ollama-0.0.1...ollama-0.0.2) (2024-01-10)
\ No newline at end of file
diff --git a/dev/ollama/0.0.2/app-readme.md b/dev/ollama/0.0.2/app-readme.md
new file mode 100644
index 0000000..3b3090a
--- /dev/null
+++ b/dev/ollama/0.0.2/app-readme.md
@@ -0,0 +1,8 @@
+Get up and running with large language models locally.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/dev/ollama](https://truecharts.org/charts/dev/ollama)
+
+---
+
+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/dev/ollama/0.0.2/charts/common-17.2.21.tgz b/dev/ollama/0.0.2/charts/common-17.2.21.tgz
new file mode 100644
index 0000000..8216afb
Binary files /dev/null and b/dev/ollama/0.0.2/charts/common-17.2.21.tgz differ
diff --git a/dev/ollama/0.0.2/ix_values.yaml b/dev/ollama/0.0.2/ix_values.yaml
new file mode 100644
index 0000000..e53010d
--- /dev/null
+++ b/dev/ollama/0.0.2/ix_values.yaml
@@ -0,0 +1,99 @@
+image:
+ repository: ollama/ollama
+ pullPolicy: IfNotPresent
+ tag: 0.1.18@sha256:5327f8c3f43e30804dbdbc039e8fcf253af8291e149f186dc5c7733f68e29217
+uiImage:
+ repository: ghcr.io/ollama-webui/ollama-webui
+ pullPolicy: IfNotPresent
+ tag: main@sha256:50dfa1104ae2f5c450bdc23920bc503a3cecd50f02efa328df98c317f8552e6c
+
+service:
+ main:
+ targetSelector: ui
+ ports:
+ main:
+ protocol: http
+ targetPort: 8080
+ port: 10686
+ targetSelector: ui
+ api:
+ enabled: true
+ type: ClusterIP
+ targetSelector: main
+ ports:
+ api:
+ enabled: true
+ protocol: http
+ port: 11434
+ targetSelector: main
+
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ imageSelector: image
+ securityContext:
+ runAsUser: 0
+ runAsGroup: 0
+ runAsNonRoot: false
+ readOnlyRootFilesystem: false
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /api/version
+ port: "{{ .Values.service.api.ports.api.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /api/version
+ port: "{{ .Values.service.api.ports.api.port }}"
+ startup:
+ enabled: true
+ type: tcp
+ port: "{{ .Values.service.api.ports.api.port }}"
+ ui:
+ enabled: true
+ type: Deployment
+ podSpec:
+ containers:
+ ui:
+ primary: true
+ enabled: true
+ imageSelector: uiImage
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /
+ port: "{{ .Values.service.main.ports.main.targetPort }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /
+ port: "{{ .Values.service.main.ports.main.targetPort }}"
+ startup:
+ enabled: true
+ type: tcp
+ port: "{{ .Values.service.main.ports.main.targetPort }}"
+ env:
+ OLLAMA_API_BASE_URL: '{{ printf "http://%v-api:%v/api" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.api.ports.api.port }}'
+
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: "/root/.ollama"
+ data:
+ enabled: true
+ targetSelector:
+ ui:
+ ui:
+ mountPath: "/app/backend/data"
+
+portal:
+ open:
+ enabled: true
diff --git a/dev/ollama/0.0.2/questions.yaml b/dev/ollama/0.0.2/questions.yaml
new file mode 100644
index 0000000..575028b
--- /dev/null
+++ b/dev/ollama/0.0.2/questions.yaml
@@ -0,0 +1,3109 @@
+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: 10686
+ 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: 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: persistenceList
+ label: Additional App Storage
+ group: Storage and Persistence
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: persistenceListEntry
+ label: Custom Storage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the storage
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: hostPath
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: mountPath
+ label: Mount Path
+ description: Path inside the container the storage is mounted
+ schema:
+ type: string
+ default: ""
+ required: true
+ valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$'
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size Quotum of Storage
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+ - variable: ingress
+ label: ""
+ group: Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+
+
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: homepage
+ label: Homepage
+ description: Connect ingress with Homepage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: name
+ label: Name (Optional)
+ description: Defaults to chart name
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: description
+ label: Description (Optional)
+ description: Defaults to chart description
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: icon
+ label: Icon (Optional)
+ description: Defaults to chart icon
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: group
+ label: Group
+ schema:
+ type: string
+ required: true
+ default: "default"
+ show_if: [["enabled", "=", true]]
+ - variable: widget
+ label: Widget Settings
+ schema:
+ type: dict
+ additional_attrs: true
+ show_if: [["enabled", "=", true]]
+ attrs:
+ - variable: enabled
+ label: Enable Widget
+ description: When disabled all widget annotations are skipped.
+ schema:
+ type: boolean
+ default: true
+ - variable: custom
+ label: Options
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: key
+ label: API-key (key)
+ schema:
+ type: string
+ default: ""
+ - variable: customkv
+ label: Custom Options
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: option
+ label: Option
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: ingressList
+ label: Add Manual Custom Ingresses
+ group: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressListEntry
+ label: Custom Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: ingressClassName
+ label: IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: overrideService
+ label: Linked Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Service Name
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: Service Port
+ schema:
+ type: int
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ default: []
+ show_if: [["certificateIssuer", "=", ""]]
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: Use TrueNAS SCALE Certificate (Deprecated)
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: Use Custom Secret (Advanced)
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: "Allow Cross Origin Requests"
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: namespace
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: homepage
+ label: Homepage
+ description: Connect ingress with Homepage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: name
+ label: Name
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: description
+ label: Description
+ description: defaults to chart description
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: group
+ label: Group
+ schema:
+ type: string
+ required: true
+ default: "default"
+ show_if: [["enabled", "=", true]]
+ - variable: securityContext
+ group: Security and Permissions
+ label: Security Context
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: container
+ label: Container
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ # Settings from questions.yaml get appended here on a per-app basis
+
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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/dev/ollama/0.0.2/templates/NOTES.txt b/dev/ollama/0.0.2/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/dev/ollama/0.0.2/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/dev/ollama/0.0.2/templates/common.yaml b/dev/ollama/0.0.2/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/dev/ollama/0.0.2/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/dev/ollama/0.0.2/values.yaml b/dev/ollama/0.0.2/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/dev/ollama/app_versions.json b/dev/ollama/app_versions.json
new file mode 100644
index 0000000..23ae15f
--- /dev/null
+++ b/dev/ollama/app_versions.json
@@ -0,0 +1,5518 @@
+{
+ "0.0.2": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/dev/ollama/0.0.2",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "0.1.18_0.0.2",
+ "version": "0.0.2",
+ "chart_metadata": {
+ "kubeVersion": ">=1.24.0-0",
+ "apiVersion": "v2",
+ "name": "ollama",
+ "version": "0.0.2",
+ "appVersion": "0.1.18",
+ "description": "Get up and running with large language models locally.",
+ "home": "https://truecharts.org/charts/incubator/ollama",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/ollama.png",
+ "deprecated": false,
+ "sources": [
+ "https://github.com/truecharts/charts/tree/master/charts/incubator/ollama",
+ "https://ghcr.io/ollama-webui/ollama-webui",
+ "https://github.com/jmorganca/ollama",
+ "https://github.com/ollama-webui/ollama-webui"
+ ],
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "keywords": [
+ "ollama",
+ "language-models"
+ ],
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.2.21",
+ "repository": "https://library-charts.truecharts.org",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "annotations": {
+ "max_scale_version": "23.10.2",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "ai",
+ "truecharts.org/max_helm_version": "3.13",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "incubator"
+ },
+ "type": "application"
+ },
+ "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": "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": "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": 10686,
+ "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": "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\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": "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": "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"
+ ],
+ "enum": [
+ {
+ "value": null,
+ "description": "No Certificate"
+ }
+ ],
+ "default": null,
+ "null": true
+ }
+ },
+ {
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "
Get up and running with large language models locally.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dev/ollama
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nImportant:\nfor the complete changelog, please refer to the website
\n\n[ollama-0.0.1]ollama-0.0.1 (2024-01-09)
"
+ }
+}
\ No newline at end of file
diff --git a/dev/ollama/item.yaml b/dev/ollama/item.yaml
new file mode 100644
index 0000000..4ca8d60
--- /dev/null
+++ b/dev/ollama/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/ollama.png
+categories:
+- ai
+screenshots: []
diff --git a/dev/openldap/11.0.14/CHANGELOG.md b/dev/openldap/11.0.14/CHANGELOG.md
new file mode 100644
index 0000000..31b9f07
--- /dev/null
+++ b/dev/openldap/11.0.14/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+## [openldap-11.0.14](https://github.com/truecharts/charts/compare/openldap-11.0.13...openldap-11.0.14) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+
+
+## [openldap-11.0.13](https://github.com/truecharts/charts/compare/openldap-11.0.12...openldap-11.0.13) (2024-01-02)
+
+### Chore
+
+
+
+- force bump to ensure up-to-date catalogs
+
+
+## [openldap-11.0.12](https://github.com/truecharts/charts/compare/openldap-11.0.11...openldap-11.0.12) (2024-01-02)
+
+### Chore
+
+
+
+- bump common ([#16751](https://github.com/truecharts/charts/issues/16751))
+
+
+## [openldap-11.0.11](https://github.com/truecharts/charts/compare/openldap-11.0.10...openldap-11.0.11) (2024-01-01)
+
+### Chore
+
+
+
+- increase common version for oci fixes
+
+- remove non-existent template refs ([#16738](https://github.com/truecharts/charts/issues/16738))
+
+
+## [openldap-11.0.10](https://github.com/truecharts/charts/compare/openldap-11.0.9...openldap-11.0.10) (2024-01-01)
+
+### Chore
+
+
+
+- bump all charts for OCI test push
+
+- move everything to consume OCI-hosted common-chart dependency
+
+- standardize ./img references ([#16704](https://github.com/truecharts/charts/issues/16704))
+
+- lints some docs, uses front-matter instead of # h1, and fix list items in changelog ([#16589](https://github.com/truecharts/charts/issues/16589))
+
+### Fix
+
+
+
+- correct mistaken common references
+
+
+## [openldap-11.0.10](https://github.com/truecharts/charts/compare/openldap-11.0.9...openldap-11.0.10) (2024-01-01)
+
+### Chore
+
+
+
+- bump all charts for OCI test push
+
+- move everything to consume OCI-hosted common-chart dependency
+
+- standardize ./img references ([#16704](https://github.com/truecharts/charts/issues/16704))
+
+- lints some docs, uses front-matter instead of # h1, and fix list items in changelog ([#16589](https://github.com/truecharts/charts/issues/16589))
+
+### Fix
+
+
+
+- correct mistaken common references
+## [openldap-11.0.9](https://github.com/truecharts/charts/compare/openldap-11.0.8...openldap-11.0.9) (2023-12-22)
+
+### Fix
+
+- expose custom options for homepage integration
+
+## [openldap-11.0.8](https://github.com/truecharts/charts/compare/openldap-11.0.7...openldap-11.0.8) (2023-12-21)
+
+### Fix
+
diff --git a/dev/openldap/11.0.14/Chart.yaml b/dev/openldap/11.0.14/Chart.yaml
new file mode 100644
index 0000000..1777385
--- /dev/null
+++ b/dev/openldap/11.0.14/Chart.yaml
@@ -0,0 +1,40 @@
+annotations:
+ max_scale_version: 23.10.2
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: cloud
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: dev
+apiVersion: v2
+appVersion: 1.5.0
+dependencies:
+ - name: common
+ version: 17.2.21
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Community developed LDAP software
+home: https://truecharts.org/charts/dev/openldap
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/openldap.png
+keywords:
+ - ldap
+ - openldap
+ - iam-stack
+ - high availability
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: openldap
+sources:
+ - https://github.com/osixia/docker-openldap
+ - https://github.com/jp-gouin/helm-openldap
+ - https://github.com/truecharts/charts/tree/master/charts/dev/openldap
+ - https://hub.docker.com/r/osixia/openldap
+type: application
+version: 11.0.14
diff --git a/dev/openldap/11.0.14/README.md b/dev/openldap/11.0.14/README.md
new file mode 100644
index 0000000..ca35f6a
--- /dev/null
+++ b/dev/openldap/11.0.14/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/dev/openldap)
+
+**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/dev/openldap/11.0.14/app-changelog.md b/dev/openldap/11.0.14/app-changelog.md
new file mode 100644
index 0000000..4e74f19
--- /dev/null
+++ b/dev/openldap/11.0.14/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [openldap-11.0.14](https://github.com/truecharts/charts/compare/openldap-11.0.13...openldap-11.0.14) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
\ No newline at end of file
diff --git a/dev/openldap/11.0.14/app-readme.md b/dev/openldap/11.0.14/app-readme.md
new file mode 100644
index 0000000..3fe8962
--- /dev/null
+++ b/dev/openldap/11.0.14/app-readme.md
@@ -0,0 +1,8 @@
+Community developed LDAP software
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/dev/openldap](https://truecharts.org/charts/dev/openldap)
+
+---
+
+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/dev/openldap/11.0.14/charts/common-17.2.21.tgz b/dev/openldap/11.0.14/charts/common-17.2.21.tgz
new file mode 100644
index 0000000..247e7e8
Binary files /dev/null and b/dev/openldap/11.0.14/charts/common-17.2.21.tgz differ
diff --git a/dev/openldap/11.0.14/ix_values.yaml b/dev/openldap/11.0.14/ix_values.yaml
new file mode 100644
index 0000000..472bb31
--- /dev/null
+++ b/dev/openldap/11.0.14/ix_values.yaml
@@ -0,0 +1,82 @@
+controller:
+ replicas: 1
+ revisionHistoryLimit: 3
+ rollingUpdate:
+ partition: null
+ surge: null
+ unavailable: 1
+ strategy: RollingUpdate
+ type: statefulset
+image:
+ pullPolicy: IfNotPresent
+ repository: osixia/openldap
+ tag: 1.5.0@sha256:18742e9c449c9c1afe129d3f2f3ee15fb34cc43e5f940a20f3399728f41d7c28
+persistence:
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: false
+replication:
+ clusterName: cluster.local
+ enabled: false
+ interval: "00:00:00:10"
+ retry: 60
+ starttls: critical
+ timeout: 1
+ tls_reqcert: never
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsGroup: 0
+ runAsUser: 0
+service:
+ ldaps:
+ enabled: true
+ ports:
+ ldaps:
+ enabled: true
+ port: 636
+ targetPort: 636
+ main:
+ ports:
+ main:
+ port: 389
+ targetPort: 389
+volumeClaimTemplates:
+ data:
+ enabled: true
+ mountPath: /var/lib/ldap/
+ slapd:
+ enabled: true
+ mountPath: /etc/ldap/slapd.d/
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ CONTAINER_LOG_LEVEL: "4"
+ KEEP_EXISTING_CONFIG: "false"
+ LDAP_ADMIN_PASSWORD: ldapadmin
+ LDAP_BACKEND: mdb
+ LDAP_BASE_DN: ""
+ LDAP_CONFIG_PASSWORD: changeme
+ LDAP_DOMAIN: example.org
+ LDAP_LOG_LEVEL: "256"
+ LDAP_ORGANISATION: Example Inc.
+ LDAP_READONLY_USER: "false"
+ LDAP_READONLY_USER_PASSWORD: readonly
+ LDAP_READONLY_USER_USERNAME: readonly
+ LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
+ LDAP_RFC2307BIS_SCHEMA: "false"
+ LDAP_SSL_HELPER_PREFIX: ldap
+ LDAP_TLS: "true"
+ LDAP_TLS_CIPHER_SUITE: NORMAL
+ LDAP_TLS_ENFORCE: "false"
+ LDAP_TLS_PROTOCOL_MIN: "3.0"
+ LDAP_TLS_REQCERT: never
+ LDAP_TLS_VERIFY_CLIENT: never
+ envFrom:
+ - configMapRef:
+ name: openldapconfig
diff --git a/dev/openldap/11.0.14/questions.yaml b/dev/openldap/11.0.14/questions.yaml
new file mode 100644
index 0000000..8b26b08
--- /dev/null
+++ b/dev/openldap/11.0.14/questions.yaml
@@ -0,0 +1,2731 @@
+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
+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: env
+ group: "App Configuration"
+ label: "Image Environment"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LDAP_READONLY_USER_USERNAME
+ label: "LDAP_READONLY_USER_USERNAME"
+ schema:
+ type: string
+ required: true
+ default: "readonly"
+ - variable: LDAP_READONLY_USER_PASSWORD
+ label: "LDAP_READONLY_USER_PASSWORD"
+ schema:
+ type: string
+ required: true
+ private: true
+ default: "REPLACETHIS"
+ - variable: LDAP_ADMIN_PASSWORD
+ label: "LDAP_ADMIN_PASSWORD"
+ schema:
+ type: string
+ required: true
+ private: true
+ default: "REPLACETHIS"
+ - variable: LDAP_CONFIG_PASSWORD
+ label: "LDAP_CONFIG_PASSWORD"
+ schema:
+ type: string
+ required: true
+ private: true
+ default: "REPLACETHIS"
+ - variable: LDAP_LOG_LEVEL
+ label: "LDAP_LOG_LEVEL"
+ schema:
+ type: int
+ required: true
+ default: 256
+ - variable: LDAP_ORGANISATION
+ label: "LDAP_ORGANISATION"
+ schema:
+ type: string
+ required: true
+ default: "Example Company or Household"
+ - variable: LDAP_DOMAIN
+ label: "LDAP_DOMAIN"
+ schema:
+ type: string
+ required: true
+ default: "example.org"
+ - variable: LDAP_READONLY_USER
+ label: "LDAP_READONLY_USER"
+ schema:
+ type: boolean
+ default: false
+ - variable: LDAP_RFC2307BIS_SCHEMA
+ label: "LDAP_RFC2307BIS_SCHEMA"
+ schema:
+ type: boolean
+ default: false
+ - variable: LDAP_BACKEND
+ label: "LDAP_BACKEND"
+ schema:
+ type: string
+ required: true
+ default: "mdb"
+ - variable: LDAP_TLS
+ label: "LDAP_TLS"
+ schema:
+ type: boolean
+ default: true
+ - variable: LDAP_TLS_ENFORCE
+ label: "LDAP_TLS_ENFORCE"
+ schema:
+ type: boolean
+ default: false
+ - variable: LDAP_TLS_VERIFY_CLIENT
+ label: "LDAP_TLS_VERIFY_CLIENT"
+ schema:
+ type: string
+ required: true
+ default: "never"
+ - variable: LDAP_TLS_PROTOCOL_MIN
+ label: "LDAP_TLS_PROTOCOL_MIN"
+ schema:
+ type: string
+ required: true
+ default: "3.0"
+ - variable: LDAP_TLS_CIPHER_SUITE
+ label: "LDAP_TLS_CIPHER_SUITE"
+ schema:
+ type: string
+ required: true
+ default: "NORMAL"
+ - variable: LDAP_TLS_REQCERT
+ label: "LDAP_TLS_REQCERT"
+ schema:
+ type: string
+ required: true
+ default: "never"
+ - variable: CONTAINER_LOG_LEVEL
+ label: "CONTAINER_LOG_LEVEL"
+ schema:
+ type: int
+ required: true
+ default: 4
+ - variable: KEEP_EXISTING_CONFIG
+ label: "KEEP_EXISTING_CONFIG"
+ schema:
+ type: boolean
+ default: false
+ - variable: LDAP_REMOVE_CONFIG_AFTER_SETUP
+ label: "LDAP_REMOVE_CONFIG_AFTER_SETUP"
+ schema:
+ type: boolean
+ default: true
+ - variable: LDAP_SSL_HELPER_PREFIX
+ label: "LDAP_SSL_HELPER_PREFIX"
+ schema:
+ type: string
+ required: true
+ default: "ldap"
+ - variable: LDAP_BASE_DN
+ label: "LDAP_BASE_DN"
+ schema:
+ type: string
+ required: true
+ default: ""
+ - 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: 389
+ required: true
+ - variable: ldaps
+ label: "ldaps Service"
+ description: "The ldaps service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - 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: ldaps
+ label: "ldaps 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: 636
+ 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: volumeClaimTemplates
+ 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: slapd
+ label: "App slapd Storage"
+ description: "Stores the Application slapd."
+ 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: 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 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/dev/openldap/11.0.14/templates/_configmap.tpl b/dev/openldap/11.0.14/templates/_configmap.tpl
new file mode 100644
index 0000000..bbab445
--- /dev/null
+++ b/dev/openldap/11.0.14/templates/_configmap.tpl
@@ -0,0 +1,17 @@
+{{/* Define the configmap */}}
+{{- define "openldap.configmap" -}}
+
+enabled: true
+data:
+ LDAP_TLS_CRT_FILENAME: "tls.crt"
+ LDAP_TLS_KEY_FILENAME: "tls.key"
+ LDAP_TLS_DH_PARAM_FILENAME: "dhparam.pem"
+ LDAP_TLS_CA_CRT_FILENAME: "ca.crt"
+{{- if .Values.replication.enabled }}
+ LDAP_REPLICATION: "true"
+ LDAP_REPLICATION_CONFIG_SYNCPROV: "binddn=\"cn=admin,cn=config\" bindmethod=simple credentials=$LDAP_CONFIG_PASSWORD searchbase=\"cn=config\" type=refreshAndPersist retry=\"{{.Values.replication.retry }} +\" timeout={{.Values.replication.timeout }} starttls={{.Values.replication.starttls }} tls_reqcert={{.Values.replication.tls_reqcert }}"
+ LDAP_REPLICATION_DB_SYNCPROV: "binddn=\"cn=admin,$LDAP_BASE_DN\" bindmethod=simple credentials=$LDAP_ADMIN_PASSWORD searchbase=\"$LDAP_BASE_DN\" type=refreshAndPersist interval={{.Values.replication.interval }} retry=\"{{.Values.replication.retry }} +\" timeout={{.Values.replication.timeout }} starttls={{.Values.replication.starttls }} tls_reqcert={{.Values.replication.tls_reqcert }}"
+ LDAP_REPLICATION_HOSTS: "#PYTHON2BASH:[{{ template "replicalist" . }}]"
+{{- end }}
+
+{{- end -}}
diff --git a/dev/openldap/11.0.14/templates/common.yaml b/dev/openldap/11.0.14/templates/common.yaml
new file mode 100644
index 0000000..ad31acb
--- /dev/null
+++ b/dev/openldap/11.0.14/templates/common.yaml
@@ -0,0 +1,8 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
+
+{{/* Render configmap for openldap */}}
+{{- include "openldap.configmap" . }}
diff --git a/dev/openldap/11.0.14/values.yaml b/dev/openldap/11.0.14/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/dev/openldap/app_versions.json b/dev/openldap/app_versions.json
new file mode 100644
index 0000000..2550936
--- /dev/null
+++ b/dev/openldap/app_versions.json
@@ -0,0 +1,4769 @@
+{
+ "11.0.14": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/dev/openldap/11.0.14",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.5.0_11.0.14",
+ "version": "11.0.14",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "23.10.2",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "cloud",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "dev"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.5.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.2.21",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Community developed LDAP software",
+ "home": "https://truecharts.org/charts/dev/openldap",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/openldap.png",
+ "keywords": [
+ "ldap",
+ "openldap",
+ "iam-stack",
+ "high availability"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "openldap",
+ "sources": [
+ "https://github.com/osixia/docker-openldap",
+ "https://github.com/jp-gouin/helm-openldap",
+ "https://github.com/truecharts/charts/tree/master/charts/dev/openldap",
+ "https://hub.docker.com/r/osixia/openldap"
+ ],
+ "type": "application",
+ "version": "11.0.14"
+ },
+ "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": "Advanced",
+ "description": "Advanced Configuration"
+ },
+ {
+ "name": "Postgresql",
+ "description": "Postgresql"
+ },
+ {
+ "name": "Documentation",
+ "description": "Documentation"
+ }
+ ],
+ "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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LDAP_READONLY_USER_USERNAME",
+ "label": "LDAP_READONLY_USER_USERNAME",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "readonly"
+ }
+ },
+ {
+ "variable": "LDAP_READONLY_USER_PASSWORD",
+ "label": "LDAP_READONLY_USER_PASSWORD",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "default": "REPLACETHIS"
+ }
+ },
+ {
+ "variable": "LDAP_ADMIN_PASSWORD",
+ "label": "LDAP_ADMIN_PASSWORD",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "default": "REPLACETHIS"
+ }
+ },
+ {
+ "variable": "LDAP_CONFIG_PASSWORD",
+ "label": "LDAP_CONFIG_PASSWORD",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "default": "REPLACETHIS"
+ }
+ },
+ {
+ "variable": "LDAP_LOG_LEVEL",
+ "label": "LDAP_LOG_LEVEL",
+ "schema": {
+ "type": "int",
+ "required": true,
+ "default": 256
+ }
+ },
+ {
+ "variable": "LDAP_ORGANISATION",
+ "label": "LDAP_ORGANISATION",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "Example Company or Household"
+ }
+ },
+ {
+ "variable": "LDAP_DOMAIN",
+ "label": "LDAP_DOMAIN",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "example.org"
+ }
+ },
+ {
+ "variable": "LDAP_READONLY_USER",
+ "label": "LDAP_READONLY_USER",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "LDAP_RFC2307BIS_SCHEMA",
+ "label": "LDAP_RFC2307BIS_SCHEMA",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "LDAP_BACKEND",
+ "label": "LDAP_BACKEND",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "mdb"
+ }
+ },
+ {
+ "variable": "LDAP_TLS",
+ "label": "LDAP_TLS",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "LDAP_TLS_ENFORCE",
+ "label": "LDAP_TLS_ENFORCE",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "LDAP_TLS_VERIFY_CLIENT",
+ "label": "LDAP_TLS_VERIFY_CLIENT",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "never"
+ }
+ },
+ {
+ "variable": "LDAP_TLS_PROTOCOL_MIN",
+ "label": "LDAP_TLS_PROTOCOL_MIN",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "3.0"
+ }
+ },
+ {
+ "variable": "LDAP_TLS_CIPHER_SUITE",
+ "label": "LDAP_TLS_CIPHER_SUITE",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "NORMAL"
+ }
+ },
+ {
+ "variable": "LDAP_TLS_REQCERT",
+ "label": "LDAP_TLS_REQCERT",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "never"
+ }
+ },
+ {
+ "variable": "CONTAINER_LOG_LEVEL",
+ "label": "CONTAINER_LOG_LEVEL",
+ "schema": {
+ "type": "int",
+ "required": true,
+ "default": 4
+ }
+ },
+ {
+ "variable": "KEEP_EXISTING_CONFIG",
+ "label": "KEEP_EXISTING_CONFIG",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "LDAP_REMOVE_CONFIG_AFTER_SETUP",
+ "label": "LDAP_REMOVE_CONFIG_AFTER_SETUP",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "LDAP_SSL_HELPER_PREFIX",
+ "label": "LDAP_SSL_HELPER_PREFIX",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "ldap"
+ }
+ },
+ {
+ "variable": "LDAP_BASE_DN",
+ "label": "LDAP_BASE_DN",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 389,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ldaps",
+ "label": "ldaps Service",
+ "description": "The ldaps service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ldaps",
+ "label": "ldaps 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": 636,
+ "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": "volumeClaimTemplates",
+ "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\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": "slapd",
+ "label": "App slapd Storage",
+ "description": "Stores the Application slapd.",
+ "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": "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "Community developed LDAP software
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dev/openldap
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nImportant:\nfor the complete changelog, please refer to the website
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- force bump to ensure up-to-date catalogs
\n
\n\nChore
\n\n\nChore
\n\n\nChore
\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
standardize ./img references (#16704)
\n \n- \n
lints some docs, uses front-matter instead of # h1, and fix list items in changelog (#16589)
\n \n
\nFix
\n\n- correct mistaken common references
\n
\n\nChore
\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
standardize ./img references (#16704)
\n \n- \n
lints some docs, uses front-matter instead of # h1, and fix list items in changelog (#16589)
\n \n
\nFix
\n\n- correct mistaken common references
\n
\n\nFix
\n\n- expose custom options for homepage integration
\n
\n\nFix
"
+ }
+}
\ No newline at end of file
diff --git a/dev/openldap/item.yaml b/dev/openldap/item.yaml
new file mode 100644
index 0000000..f2efb82
--- /dev/null
+++ b/dev/openldap/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/openldap.png
+categories:
+- cloud
+screenshots: []
diff --git a/dev/postgresql/15.0.17/CHANGELOG.md b/dev/postgresql/15.0.17/CHANGELOG.md
new file mode 100644
index 0000000..8bc745c
--- /dev/null
+++ b/dev/postgresql/15.0.17/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+## [postgresql-15.0.17](https://github.com/truecharts/charts/compare/postgresql-15.0.15...postgresql-15.0.17) (2024-01-21)
+
+### Fix
+
+
+
+- fix key ([#17458](https://github.com/truecharts/charts/issues/17458))
+
+
+## [postgresql-15.0.15](https://github.com/truecharts/charts/compare/postgresql-15.0.14...postgresql-15.0.15) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+
+
+## [postgresql-15.0.14](https://github.com/truecharts/charts/compare/postgresql-15.0.13...postgresql-15.0.14) (2024-01-02)
+
+### Chore
+
+
+
+- force bump to ensure up-to-date catalogs
+
+
+## [postgresql-15.0.13](https://github.com/truecharts/charts/compare/postgresql-15.0.12...postgresql-15.0.13) (2024-01-02)
+
+### Chore
+
+
+
+- bump common ([#16751](https://github.com/truecharts/charts/issues/16751))
+
+
+## [postgresql-15.0.12](https://github.com/truecharts/charts/compare/postgresql-15.0.11...postgresql-15.0.12) (2024-01-01)
+
+### Chore
+
+
+
+- increase common version for oci fixes
+
+- remove non-existent template refs ([#16738](https://github.com/truecharts/charts/issues/16738))
+
+
+## [postgresql-15.0.11](https://github.com/truecharts/charts/compare/postgresql-15.0.10...postgresql-15.0.11) (2024-01-01)
+
+### Chore
+
+
+
+- bump all charts for OCI test push
+
+- move everything to consume OCI-hosted common-chart dependency
+
+- standardize ./img references ([#16704](https://github.com/truecharts/charts/issues/16704))
+
+- lints some docs, uses front-matter instead of # h1, and fix list items in changelog ([#16589](https://github.com/truecharts/charts/issues/16589))
+
+### Fix
+
+
+
+- correct mistaken common references
+
+
+## [postgresql-15.0.11](https://github.com/truecharts/charts/compare/postgresql-15.0.10...postgresql-15.0.11) (2024-01-01)
+
+### Chore
+
+
+
+- bump all charts for OCI test push
+
+- move everything to consume OCI-hosted common-chart dependency
+
+- standardize ./img references ([#16704](https://github.com/truecharts/charts/issues/16704))
+
+- lints some docs, uses front-matter instead of # h1, and fix list items in changelog ([#16589](https://github.com/truecharts/charts/issues/16589))
+
+### Fix
+
+
+
+- correct mistaken common references
+## [postgresql-15.0.10](https://github.com/truecharts/charts/compare/postgresql-15.0.9...postgresql-15.0.10) (2023-12-22)
diff --git a/dev/postgresql/15.0.17/Chart.yaml b/dev/postgresql/15.0.17/Chart.yaml
new file mode 100644
index 0000000..d4a6639
--- /dev/null
+++ b/dev/postgresql/15.0.17/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 23.10.2
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: database
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: dev
+apiVersion: v2
+appVersion: 14.10.0
+dependencies:
+ - name: common
+ version: 17.2.21
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: PostgresSQL
+home: https://truecharts.org/charts/dev/postgresql
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/postgresql.png
+keywords:
+ - postgres
+ - postgressql
+ - dtabase
+ - sql
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: postgresql
+sources:
+ - https://www.postgresql.org/
+ - https://github.com/truecharts/charts/tree/master/charts/dev/postgresql
+ - https://hub.docker.com/r/bitnami/postgresql
+type: application
+version: 15.0.17
diff --git a/dev/postgresql/15.0.17/README.md b/dev/postgresql/15.0.17/README.md
new file mode 100644
index 0000000..a47eba5
--- /dev/null
+++ b/dev/postgresql/15.0.17/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/dev/postgresql)
+
+**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/dev/postgresql/15.0.17/app-changelog.md b/dev/postgresql/15.0.17/app-changelog.md
new file mode 100644
index 0000000..5f6550e
--- /dev/null
+++ b/dev/postgresql/15.0.17/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [postgresql-15.0.17](https://github.com/truecharts/charts/compare/postgresql-15.0.15...postgresql-15.0.17) (2024-01-21)
+
+### Fix
+
+
+
+- fix key ([#17458](https://github.com/truecharts/charts/issues/17458))
\ No newline at end of file
diff --git a/dev/postgresql/15.0.17/app-readme.md b/dev/postgresql/15.0.17/app-readme.md
new file mode 100644
index 0000000..027e44a
--- /dev/null
+++ b/dev/postgresql/15.0.17/app-readme.md
@@ -0,0 +1,8 @@
+PostgresSQL
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/dev/postgresql](https://truecharts.org/charts/dev/postgresql)
+
+---
+
+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/dev/postgresql/15.0.17/charts/common-17.2.21.tgz b/dev/postgresql/15.0.17/charts/common-17.2.21.tgz
new file mode 100644
index 0000000..247e7e8
Binary files /dev/null and b/dev/postgresql/15.0.17/charts/common-17.2.21.tgz differ
diff --git a/dev/postgresql/15.0.17/ix_values.yaml b/dev/postgresql/15.0.17/ix_values.yaml
new file mode 100644
index 0000000..f0d598f
--- /dev/null
+++ b/dev/postgresql/15.0.17/ix_values.yaml
@@ -0,0 +1,45 @@
+cnpg:
+ main:
+ createRO: false
+ creds: {}
+ database: app
+ enabled: false
+ instances: 2
+ monitoring:
+ enablePodMonitor: true
+ pooler:
+ instances: 2
+ primary: true
+ primaryUpdateStrategy: unsupervised
+ storage:
+ size: 256Gi
+ walsize: 256Gi
+ user: app
+image:
+ pullPolicy: IfNotPresent
+ repository: bitnami/postgresql
+ tag: 14.10.0@sha256:f73fe14c4a24dac0e322abed5cf6d8fd7fe923dc2281324e549ddb9c912429da
+portal:
+ open:
+ enabled: false
+service:
+ main:
+ enabled: false
+ ports:
+ main:
+ enabled: false
+ port: 9999
+workload:
+ main:
+ enabled: false
+ podSpec:
+ containers:
+ main:
+ enabled: false
+ probes:
+ liveness:
+ enabled: false
+ readiness:
+ enabled: false
+ startup:
+ enabled: false
diff --git a/dev/postgresql/15.0.17/questions.yaml b/dev/postgresql/15.0.17/questions.yaml
new file mode 100644
index 0000000..358c03d
--- /dev/null
+++ b/dev/postgresql/15.0.17/questions.yaml
@@ -0,0 +1,535 @@
+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
+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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ default: false
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: scheduledBackups
+ label: ScheduledBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backupschedule
+ label: BackupSchedule
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: "daily-backup"
+ required: true
+ - variable: schedule
+ label: schedule
+ schema:
+ type: string
+ required: true
+ default: "0 0 0 * * *"
+ - variable: backupOwnerReference
+ label: backupOwnerReference
+ schema:
+ type: string
+ required: true
+ default: "self"
+ - variable: immediate
+ label: immediate
+ schema:
+ type: boolean
+ default: false
+ - variable: suspend
+ label: suspend
+ schema:
+ type: boolean
+ default: false
+ - variable: manualBackups
+ label: manualBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backup
+ label: Backup
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: 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/dev/postgresql/15.0.17/templates/NOTES.txt b/dev/postgresql/15.0.17/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/dev/postgresql/15.0.17/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/dev/postgresql/15.0.17/templates/common.yaml b/dev/postgresql/15.0.17/templates/common.yaml
new file mode 100644
index 0000000..992373e
--- /dev/null
+++ b/dev/postgresql/15.0.17/templates/common.yaml
@@ -0,0 +1,2 @@
+
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/dev/postgresql/15.0.17/values.yaml b/dev/postgresql/15.0.17/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/dev/postgresql/app_versions.json b/dev/postgresql/app_versions.json
new file mode 100644
index 0000000..057932b
--- /dev/null
+++ b/dev/postgresql/app_versions.json
@@ -0,0 +1,1032 @@
+{
+ "15.0.17": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/dev/postgresql/15.0.17",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [],
+ "human_version": "14.10.0_15.0.17",
+ "version": "15.0.17",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "23.10.2",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "database",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "dev"
+ },
+ "apiVersion": "v2",
+ "appVersion": "14.10.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.2.21",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "PostgresSQL",
+ "home": "https://truecharts.org/charts/dev/postgresql",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/postgresql.png",
+ "keywords": [
+ "postgres",
+ "postgressql",
+ "dtabase",
+ "sql"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "postgresql",
+ "sources": [
+ "https://www.postgresql.org/",
+ "https://github.com/truecharts/charts/tree/master/charts/dev/postgresql",
+ "https://hub.docker.com/r/bitnami/postgresql"
+ ],
+ "type": "application",
+ "version": "15.0.17"
+ },
+ "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": "Advanced",
+ "description": "Advanced Configuration"
+ },
+ {
+ "name": "Postgresql",
+ "description": "Postgresql"
+ },
+ {
+ "name": "Documentation",
+ "description": "Documentation"
+ }
+ ],
+ "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "scheduledBackups",
+ "label": "ScheduledBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backupschedule",
+ "label": "BackupSchedule",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "daily-backup",
+ "required": true
+ }
+ },
+ {
+ "variable": "schedule",
+ "label": "schedule",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "0 0 0 * * *"
+ }
+ },
+ {
+ "variable": "backupOwnerReference",
+ "label": "backupOwnerReference",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "self"
+ }
+ },
+ {
+ "variable": "immediate",
+ "label": "immediate",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "suspend",
+ "label": "suspend",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "manualBackups",
+ "label": "manualBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backup",
+ "label": "Backup",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "PostgresSQL
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dev/postgresql
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nImportant:\nfor the complete changelog, please refer to the website
\n\nFix
\n\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- force bump to ensure up-to-date catalogs
\n
\n\nChore
\n\n\nChore
\n\n\nChore
\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
standardize ./img references (#16704)
\n \n- \n
lints some docs, uses front-matter instead of # h1, and fix list items in changelog (#16589)
\n \n
\nFix
\n\n- correct mistaken common references
\n
\n\nChore
\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
standardize ./img references (#16704)
\n \n- \n
lints some docs, uses front-matter instead of # h1, and fix list items in changelog (#16589)
\n \n
\nFix
\n\n- correct mistaken common references
\n
\n"
+ }
+}
\ No newline at end of file
diff --git a/dev/postgresql/item.yaml b/dev/postgresql/item.yaml
new file mode 100644
index 0000000..6a15c4b
--- /dev/null
+++ b/dev/postgresql/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/postgresql.png
+categories:
+- database
+screenshots: []
diff --git a/dev/privatebin/4.0.15/CHANGELOG.md b/dev/privatebin/4.0.15/CHANGELOG.md
new file mode 100644
index 0000000..6fb84fe
--- /dev/null
+++ b/dev/privatebin/4.0.15/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+## [privatebin-4.0.15](https://github.com/truecharts/charts/compare/privatebin-4.0.14...privatebin-4.0.15) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+
+
+## [privatebin-4.0.14](https://github.com/truecharts/charts/compare/privatebin-4.0.13...privatebin-4.0.14) (2024-01-03)
+
+### Chore
+
+
+
+- update ignored by renovate (patch) ([#16673](https://github.com/truecharts/charts/issues/16673))
+
+
+## [privatebin-4.0.13](https://github.com/truecharts/charts/compare/privatebin-4.0.12...privatebin-4.0.13) (2024-01-02)
+
+### Chore
+
+
+
+- force bump to ensure up-to-date catalogs
+
+
+## [privatebin-4.0.12](https://github.com/truecharts/charts/compare/privatebin-4.0.11...privatebin-4.0.12) (2024-01-02)
+
+### Chore
+
+
+
+- bump common ([#16751](https://github.com/truecharts/charts/issues/16751))
+
+
+## [privatebin-4.0.11](https://github.com/truecharts/charts/compare/privatebin-4.0.10...privatebin-4.0.11) (2024-01-01)
+
+### Chore
+
+
+
+- increase common version for oci fixes
+
+- remove non-existent template refs ([#16738](https://github.com/truecharts/charts/issues/16738))
+
+
+## [privatebin-4.0.10](https://github.com/truecharts/charts/compare/privatebin-4.0.9...privatebin-4.0.10) (2024-01-01)
+
+### Chore
+
+
+
+- bump all charts for OCI test push
+
+- move everything to consume OCI-hosted common-chart dependency
+
+- standardize ./img references ([#16704](https://github.com/truecharts/charts/issues/16704))
+
+- lints some docs, uses front-matter instead of # h1, and fix list items in changelog ([#16589](https://github.com/truecharts/charts/issues/16589))
+
+### Fix
+
+
+
+- correct mistaken common references
+
+
+## [privatebin-4.0.10](https://github.com/truecharts/charts/compare/privatebin-4.0.9...privatebin-4.0.10) (2024-01-01)
+
+### Chore
+
+
+
+- bump all charts for OCI test push
+
+- move everything to consume OCI-hosted common-chart dependency
+
+- standardize ./img references ([#16704](https://github.com/truecharts/charts/issues/16704))
+
+- lints some docs, uses front-matter instead of # h1, and fix list items in changelog ([#16589](https://github.com/truecharts/charts/issues/16589))
+
+### Fix
+
+
+
+- correct mistaken common references
+## [privatebin-4.0.9](https://github.com/truecharts/charts/compare/privatebin-4.0.8...privatebin-4.0.9) (2023-12-22)
diff --git a/dev/privatebin/4.0.15/Chart.yaml b/dev/privatebin/4.0.15/Chart.yaml
new file mode 100644
index 0000000..bf5b54e
--- /dev/null
+++ b/dev/privatebin/4.0.15/Chart.yaml
@@ -0,0 +1,38 @@
+annotations:
+ max_scale_version: 23.10.2
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: productivity
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: dev
+apiVersion: v2
+appVersion: 1.6.2
+dependencies:
+ - name: common
+ version: 17.2.21
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data.
+home: https://truecharts.org/charts/dev/privatebin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/privatebin.png
+keywords:
+ - privatebin
+ - pastebin
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: privatebin
+sources:
+ - https://privatebin.info/
+ - https://github.com/PrivateBin/PrivateBin
+ - https://github.com/truecharts/charts/tree/master/charts/dev/privatebin
+ - https://hub.docker.com/r/privatebin/pdo
+type: application
+version: 4.0.15
diff --git a/dev/privatebin/4.0.15/README.md b/dev/privatebin/4.0.15/README.md
new file mode 100644
index 0000000..192d4e7
--- /dev/null
+++ b/dev/privatebin/4.0.15/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/dev/privatebin)
+
+**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/dev/privatebin/4.0.15/app-changelog.md b/dev/privatebin/4.0.15/app-changelog.md
new file mode 100644
index 0000000..0c15194
--- /dev/null
+++ b/dev/privatebin/4.0.15/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [privatebin-4.0.15](https://github.com/truecharts/charts/compare/privatebin-4.0.14...privatebin-4.0.15) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
\ No newline at end of file
diff --git a/dev/privatebin/4.0.15/app-readme.md b/dev/privatebin/4.0.15/app-readme.md
new file mode 100644
index 0000000..c6ab608
--- /dev/null
+++ b/dev/privatebin/4.0.15/app-readme.md
@@ -0,0 +1,8 @@
+PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/dev/privatebin](https://truecharts.org/charts/dev/privatebin)
+
+---
+
+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/dev/privatebin/4.0.15/charts/common-17.2.21.tgz b/dev/privatebin/4.0.15/charts/common-17.2.21.tgz
new file mode 100644
index 0000000..247e7e8
Binary files /dev/null and b/dev/privatebin/4.0.15/charts/common-17.2.21.tgz differ
diff --git a/dev/privatebin/4.0.15/ix_values.yaml b/dev/privatebin/4.0.15/ix_values.yaml
new file mode 100644
index 0000000..98d3f4a
--- /dev/null
+++ b/dev/privatebin/4.0.15/ix_values.yaml
@@ -0,0 +1,103 @@
+image:
+ pullPolicy: IfNotPresent
+ repository: privatebin/pdo
+ tag: 1.6.2@sha256:e4fff051514a2932ff8d6fd49cfdb31b48aa435c194e2cbc5be94539cdb3e5e8
+persistence:
+ conf-app:
+ enabled: true
+ mountPath: /srv/cfg
+ readOnly: true
+ type: custom
+ volumeSpec:
+ secret:
+ secretName: "secret"
+ conf-nginx:
+ enabled: true
+ mountPath: /etc/nginx/conf.d/sizelimits.conf
+ readOnly: true
+ subPath: sizelimits-nginx.conf
+ type: custom
+ volumeSpec:
+ configMap:
+ name: "config"
+ conf-php:
+ enabled: true
+ mountPath: /etc/php8/conf.d/10-sizelimits.ini
+ readOnly: true
+ subPath: sizelimits-php.ini
+ type: custom
+ volumeSpec:
+ configMap:
+ name: "config"
+ nginx-cache:
+ enabled: true
+ mountPath: /var/lib/nginx/tmp
+ type: emptyDir
+ run:
+ enabled: true
+ medium: Memory
+ mountPath: /run
+ type: emptyDir
+portal:
+ open:
+ enabled: true
+cnpg:
+ main:
+ enabled: true
+ database: privatebin
+ user: privatebin
+privatebin:
+ expire:
+ default: 1week
+ main:
+ basepath: ""
+ burnafterreadingselected: false
+ compression: ""
+ cspheader: ""
+ defaultformatter: plaintext
+ discussion: true
+ fileupload: false
+ httpwarning: ""
+ icon: ""
+ info: ""
+ languagedefault: ""
+ languageselection: false
+ name: ""
+ notice: ""
+ opendiscussion: false
+ password: true
+ qrcode: ""
+ sizelimit: 10485760
+ syntaxhighlightingtheme: ""
+ template: bootstrap
+ urlshortener: ""
+ zerobincompatibility: ""
+ purge:
+ batchsize: 10
+ limit: 300
+ traffic:
+ creators: ""
+ exempted: ""
+ header: ""
+ limit: 10
+securityContext:
+ container:
+ runAsGroup: 82
+ runAsUser: 65534
+ pod:
+ fsGroup: 82
+service:
+ main:
+ ports:
+ main:
+ port: 10248
+ protocol: http
+ targetPort: 8080
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ PHP_TZ: "{{ .Values.TZ }}"
+ TZ: "{{ .Values.TZ }}"
diff --git a/dev/privatebin/4.0.15/questions.yaml b/dev/privatebin/4.0.15/questions.yaml
new file mode 100644
index 0000000..a4d9124
--- /dev/null
+++ b/dev/privatebin/4.0.15/questions.yaml
@@ -0,0 +1,3308 @@
+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: privatebin
+ group: "App Configuration"
+ label: "PrivateBin Custom Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "name"
+ description: "Set a project name to be displayed on the website"
+ schema:
+ type: string
+ default: ""
+ - variable: basepath
+ label: "basepath"
+ description: "The full URL, with the domain name and directories that point to the PrivateBin files. This URL is essential to allow Opengraph images to be displayed on social networks."
+ schema:
+ type: string
+ default: ""
+ - variable: discussion
+ label: "discussion"
+ description: "Enable or disable the discussion feature"
+ schema:
+ type: boolean
+ default: true
+ - variable: opendiscussion
+ label: "opendiscussion"
+ description: "Preselect the discussion feature"
+ schema:
+ type: boolean
+ default: false
+ - variable: password
+ label: "password"
+ description: "Enable or disable the password feature"
+ schema:
+ type: boolean
+ default: true
+ - variable: fileupload
+ label: "fileupload"
+ description: "Enable or disable the file upload feature"
+ schema:
+ type: boolean
+ default: false
+ - variable: burnafterreadingselected
+ label: "burnafterreadingselected"
+ description: "Preselect the burn-after-reading feature"
+ schema:
+ type: boolean
+ default: false
+ - variable: defaultformatter
+ label: "defaultformatter"
+ description: "Which display mode to preselect by default"
+ schema:
+ type: string
+ default: "plaintext"
+ required: true
+ enum:
+ - value: "plaintext"
+ description: "Plain Text"
+ - value: "syntaxhighlighting"
+ description: "Source Code"
+ - value: "markdown"
+ description: "Markdown"
+ - variable: syntaxhighlightingtheme
+ label: "syntaxhighlightingtheme"
+ description: "Set a syntax highlighting theme"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "PrivateBin Default"
+ - value: "desert"
+ description: "Desert"
+ - value: "doxy"
+ description: "Doxy"
+ - value: "prettify"
+ description: "Default"
+ - value: "sons-of-obsidian"
+ description: "Sons-Of-Obsidian"
+ - value: "sunburst"
+ description: "Sunburst"
+ - variable: sizelimit
+ label: "sizelimit"
+ description: "Size limit per paste or comment in bytes"
+ schema:
+ type: int
+ default: 10485760
+ required: true
+ - variable: template
+ label: "template"
+ description: "Template to use"
+ schema:
+ type: string
+ default: "bootstrap"
+ required: true
+ enum:
+ - value: "bootstrap"
+ description: "bootstrap"
+ - value: "bootstrap-page"
+ description: "bootstrap-page"
+ - value: "bootstrap-dark"
+ description: "bootstrap-dark"
+ - value: "bootstrap-dark-page"
+ description: "bootstrap-dark-page"
+ - value: "bootstrap-compact"
+ description: "bootstrap-compact"
+ - value: "bootstrap-compact-page"
+ description: "bootstrap-compact-page"
+ - value: "page"
+ description: "page"
+ - variable: info
+ label: "info"
+ description: "Info text to display. Use single, instead of double quotes for HTML attributes."
+ schema:
+ type: string
+ default: ""
+ - variable: notice
+ label: "notice"
+ description: "Notice to display"
+ schema:
+ type: string
+ default: ""
+ - variable: languageselection
+ label: "languageselection"
+ description: "By default PrivateBin will guess the visitors language based on the browsers settings. Optionally you can enable the language selection menu, which uses a session cookie to store the choice until the browser is closed."
+ schema:
+ type: boolean
+ default: false
+ - variable: languagedefault
+ label: "languagedefault"
+ description: "Set the language your installs defaults to, defaults to English. If this is set and language selection is disabled, this will be the only language."
+ schema:
+ type: string
+ default: ""
+ - variable: urlshortener
+ label: "urlshortener"
+ description: "URL shortener address to offer after a new paste is created. It is suggested to only use this with self-hosted shorteners as this will leak the pastes encryption key."
+ schema:
+ type: string
+ default: ""
+ - variable: qrcode
+ label: "qrcode"
+ description: "Let users create a QR code for sharing the paste URL with one click. It works both when a new paste is created and when you view a paste."
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "PrivateBin Default"
+ - value: "true"
+ description: "true"
+ - value: "false"
+ description: "false"
+ - variable: icon
+ label: "icon"
+ description: "IP based icons are a weak mechanism to detect if a comment was from. a different user when the same username was used in a comment. It might be used to get the IP of a non anonymous comment poster if the server salt is leaked and a SHA256 HMAC rainbow table is generated for all (relevant) IPs."
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "PrivateBin Default"
+ - value: "none"
+ description: "none"
+ - value: "vizhash"
+ description: "vizhash"
+ - value: "identicon"
+ description: "identicon"
+ - variable: cspheader
+ label: "cspheader"
+ description: "Content Security Policy headers allow a website to restrict what sources are allowed to be accessed in its context. You need to change this if you added custom scripts from third-party domains to your templates, e.g. tracking scripts or run your site behind certain DDoS-protection services. Check the documentation at https://content-security-policy.com/"
+ schema:
+ type: string
+ default: ""
+ - variable: zerobincompatibility
+ label: "zerobincompatibility"
+ description: "Stay compatible with PrivateBin Alpha 0.19, less secure. f enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of sha256 in HMAC for the deletion token."
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "PrivateBin Default"
+ - value: "true"
+ description: "true"
+ - value: "false"
+ description: "false"
+ - variable: httpwarning
+ label: "httpwarning"
+ description: "Enable or disable the warning message when the site is served over an insecure connection (insecure HTTP instead of HTTPS). Secure transport methods like Tor and I2P domains are automatically whitelisted. It is **strongly discouraged** to disable this."
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "PrivateBin Default"
+ - value: "true"
+ description: "true"
+ - value: "false"
+ description: "false"
+ - variable: compression
+ label: "compression"
+ description: "Pick compression algorithm or disable it. Only applies to pastes/comments created after changing the setting."
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "PrivateBin Default"
+ - value: "none"
+ description: "none"
+ - value: "zlib"
+ description: "zlib"
+ - variable: expire
+ label: "Expire Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: default
+ label: "default"
+ description: "Expire value that is selected per default"
+ schema:
+ type: string
+ default: "1week"
+ required: true
+ enum:
+ - value: "5min"
+ description: "5min"
+ - value: "10min"
+ description: "10min"
+ - value: "1hour"
+ description: "1hour"
+ - value: "1day"
+ description: "1day"
+ - value: "1week"
+ description: "1week"
+ - value: "1month"
+ description: "1month"
+ - value: "1year"
+ description: "1year"
+ - value: "never"
+ description: "never"
+ - variable: traffic
+ label: "Traffic Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limit
+ label: "limit"
+ description: "Time limit between calls from the same IP address in seconds"
+ schema:
+ type: int
+ default: 10
+ required: true
+ - variable: exempted
+ label: "exempted"
+ description: "Set IPs addresses (v4 or v6) or subnets (CIDR) which are exempted from the rate-limit. Invalid IPs will be ignored. If multiple values are to be exempted, the list needs to be comma separated. Leave unset to disable exemptions."
+ schema:
+ type: string
+ default: ""
+ - variable: creators
+ label: "creators"
+ description: "If you want only some source IP addresses (v4 or v6) or subnets (CIDR) to be allowed to create pastes, set these here. Invalid IPs will be ignored. If multiple values are to be exempted, the list needs to be comma separated. Leave unset to allow anyone to create pastes."
+ schema:
+ type: string
+ default: ""
+ - variable: header
+ label: "header"
+ description: "If your website runs behind a reverse proxy or load balancer, set the HTTP header containing the visitors IP address, i.e. X_FORWARDED_FOR"
+ schema:
+ type: string
+ default: ""
+ - variable: purge
+ label: "Purge Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limit
+ label: "limit"
+ description: "Minimum time limit between two purgings of expired pastes, it is only triggered when pastes are created"
+ schema:
+ type: int
+ default: 300
+ required: true
+ - variable: batchsize
+ label: "batchsize"
+ description: "Maximum amount of expired pastes to delete in one purge. Set this to 0 to disable purging. Set it higher, if you are running a large site."
+ schema:
+ type: int
+ default: 10
+ 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: 10248
+ 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: persistenceList
+ label: Additional App Storage
+ group: Storage and Persistence
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: persistenceListEntry
+ label: Custom Storage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the storage
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: hostPath
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: mountPath
+ label: Mount Path
+ description: Path inside the container the storage is mounted
+ schema:
+ type: string
+ default: ""
+ required: true
+ valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$'
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size Quotum of Storage
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+ - variable: ingress
+ label: ""
+ group: Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: homepage
+ label: Homepage
+ description: Connect ingress with Homepage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: name
+ label: Name (Optional)
+ description: Defaults to chart name
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: description
+ label: Description (Optional)
+ description: Defaults to chart description
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: icon
+ label: Icon (Optional)
+ description: Defaults to chart icon
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: group
+ label: Group
+ schema:
+ type: string
+ required: true
+ default: "default"
+ show_if: [["enabled", "=", true]]
+ - variable: widget
+ label: Widget Settings
+ schema:
+ type: dict
+ additional_attrs: true
+ show_if: [["enabled", "=", true]]
+ attrs:
+ - variable: enabled
+ label: Enable Widget
+ description: When disabled all widget annotations are skipped.
+ schema:
+ type: boolean
+ default: true
+ - variable: custom
+ label: Options
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: key
+ label: API-key (key)
+ schema:
+ type: string
+ default: ""
+ - variable: customkv
+ label: Custom Options
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: option
+ label: Option
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: ingressList
+ label: Add Manual Custom Ingresses
+ group: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressListEntry
+ label: Custom Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: ingressClassName
+ label: IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: overrideService
+ label: Linked Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Service Name
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: Service Port
+ schema:
+ type: int
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ default: []
+ show_if: [["certificateIssuer", "=", ""]]
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: Use TrueNAS SCALE Certificate (Deprecated)
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: Use Custom Secret (Advanced)
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: "Allow Cross Origin Requests"
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: namespace
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: homepage
+ label: Homepage
+ description: Connect ingress with Homepage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: name
+ label: Name
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: description
+ label: Description
+ description: defaults to chart description
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: group
+ label: Group
+ schema:
+ type: string
+ required: true
+ default: "default"
+ show_if: [["enabled", "=", true]]
+ - variable: securityContext
+ group: Security and Permissions
+ label: Security Context
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: container
+ label: Container
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ # Settings from questions.yaml get appended here on a per-app basis
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 65534
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 82
+ # 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: 82
+ - variable: resources
+ group: Resources and Devices
+ label: "Resource Limits"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limits
+ label: Advanced Limit Resource Consumption
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 4000m
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: RAM
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 8Gi
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: requests
+ label: "Minimum Resources Required (request)"
+ schema:
+ additional_attrs: true
+ type: dict
+ hidden: true
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 10m
+ hidden: true
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: "RAM"
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 50Mi
+ hidden: true
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: deviceList
+ label: Mount USB Devices
+ group: Resources and Devices
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: deviceListEntry
+ label: Device
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Storage
+ schema:
+ type: boolean
+ default: true
+ - variable: type
+ label: (Advanced) Type of Storage
+ description: Sets the persistence type
+ schema:
+ type: string
+ default: device
+ hidden: true
+ - variable: readOnly
+ label: readOnly
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Device Path
+ description: Path to the device on the host system
+ schema:
+ type: path
+ - variable: mountPath
+ label: Container Device Path
+ description: Path inside the container the device is mounted
+ schema:
+ type: string
+ default: "/dev/ttyACM0"
+ - variable: scaleGPU
+ label: GPU Configuration
+ group: Resources and Devices
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: scaleGPUEntry
+ label: GPU
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ # Specify GPU configuration
+ - variable: gpu
+ label: Select GPU
+ schema:
+ additional_attrs: true
+ type: dict
+ $ref:
+ - "definitions/gpuConfiguration"
+ attrs: []
+ - variable: workaround
+ label: "Workaround"
+ schema:
+ type: string
+ default: workaround
+ hidden: true
+ - variable: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ default: false
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: scheduledBackups
+ label: ScheduledBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backupschedule
+ label: BackupSchedule
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: "daily-backup"
+ required: true
+ - variable: schedule
+ label: schedule
+ schema:
+ type: string
+ required: true
+ default: "0 0 0 * * *"
+ - variable: backupOwnerReference
+ label: backupOwnerReference
+ schema:
+ type: string
+ required: true
+ default: "self"
+ - variable: immediate
+ label: immediate
+ schema:
+ type: boolean
+ default: false
+ - variable: suspend
+ label: suspend
+ schema:
+ type: boolean
+ default: false
+ - variable: manualBackups
+ label: manualBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backup
+ label: Backup
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+# - variable: 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/dev/privatebin/4.0.15/templates/_configmap.tpl b/dev/privatebin/4.0.15/templates/_configmap.tpl
new file mode 100644
index 0000000..52bb7b9
--- /dev/null
+++ b/dev/privatebin/4.0.15/templates/_configmap.tpl
@@ -0,0 +1,16 @@
+{{/* Calculate PHP and NGINX file size limits from PrivateBin configuration */}}
+{{- define "privatebin.configmap" -}}
+enabled: true
+data:
+ {{/*
+ Multiply by 1, so large integers aren't rendered in scientific notation
+ See: https://github.com/helm/helm/issues/1707#issuecomment-1167860346
+ */}}
+ sizelimits-php.ini: |-
+ upload_max_filesize = {{ mul .Values.privatebin.main.sizelimit 1 }}
+ post_max_size = {{ mul .Values.privatebin.main.sizelimit 1 }}
+ memory_limit = {{ mul .Values.privatebin.main.sizelimit 2 }}
+ sizelimits-nginx.conf: |-
+ client_max_body_size {{ add (div (div .Values.privatebin.main.sizelimit 1024) 1024) 5 }}M;
+
+{{- end }}
diff --git a/dev/privatebin/4.0.15/templates/_secrets.tpl b/dev/privatebin/4.0.15/templates/_secrets.tpl
new file mode 100644
index 0000000..b50cdf5
--- /dev/null
+++ b/dev/privatebin/4.0.15/templates/_secrets.tpl
@@ -0,0 +1,228 @@
+{{/*
+ Custom PrivateBin configuration. See also:
+ https://github.com/PrivateBin/docker-nginx-fpm-alpine#custom-configuration
+
+ The default configuration file can be found here:
+ https://github.com/PrivateBin/PrivateBin/blob/master/cfg/conf.sample.php
+*/}}
+{{- define "privatebin.secrets" -}}
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: {{ include "tc.v1.common.names.fullname" . }}-secret
+ labels:
+
+data:
+ conf.php: |-
+ ;=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "privatebin",
+ "sources": [
+ "https://privatebin.info/",
+ "https://github.com/PrivateBin/PrivateBin",
+ "https://github.com/truecharts/charts/tree/master/charts/dev/privatebin",
+ "https://hub.docker.com/r/privatebin/pdo"
+ ],
+ "type": "application",
+ "version": "4.0.15"
+ },
+ "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": "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": "privatebin",
+ "group": "App Configuration",
+ "label": "PrivateBin Custom Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "description": "Set a project name to be displayed on the website",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "basepath",
+ "label": "basepath",
+ "description": "The full URL, with the domain name and directories that point to the PrivateBin files. This URL is essential to allow Opengraph images to be displayed on social networks.",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "discussion",
+ "label": "discussion",
+ "description": "Enable or disable the discussion feature",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "opendiscussion",
+ "label": "opendiscussion",
+ "description": "Preselect the discussion feature",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "description": "Enable or disable the password feature",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "fileupload",
+ "label": "fileupload",
+ "description": "Enable or disable the file upload feature",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "burnafterreadingselected",
+ "label": "burnafterreadingselected",
+ "description": "Preselect the burn-after-reading feature",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "defaultformatter",
+ "label": "defaultformatter",
+ "description": "Which display mode to preselect by default",
+ "schema": {
+ "type": "string",
+ "default": "plaintext",
+ "required": true,
+ "enum": [
+ {
+ "value": "plaintext",
+ "description": "Plain Text"
+ },
+ {
+ "value": "syntaxhighlighting",
+ "description": "Source Code"
+ },
+ {
+ "value": "markdown",
+ "description": "Markdown"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "syntaxhighlightingtheme",
+ "label": "syntaxhighlightingtheme",
+ "description": "Set a syntax highlighting theme",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "PrivateBin Default"
+ },
+ {
+ "value": "desert",
+ "description": "Desert"
+ },
+ {
+ "value": "doxy",
+ "description": "Doxy"
+ },
+ {
+ "value": "prettify",
+ "description": "Default"
+ },
+ {
+ "value": "sons-of-obsidian",
+ "description": "Sons-Of-Obsidian"
+ },
+ {
+ "value": "sunburst",
+ "description": "Sunburst"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "sizelimit",
+ "label": "sizelimit",
+ "description": "Size limit per paste or comment in bytes",
+ "schema": {
+ "type": "int",
+ "default": 10485760,
+ "required": true
+ }
+ },
+ {
+ "variable": "template",
+ "label": "template",
+ "description": "Template to use",
+ "schema": {
+ "type": "string",
+ "default": "bootstrap",
+ "required": true,
+ "enum": [
+ {
+ "value": "bootstrap",
+ "description": "bootstrap"
+ },
+ {
+ "value": "bootstrap-page",
+ "description": "bootstrap-page"
+ },
+ {
+ "value": "bootstrap-dark",
+ "description": "bootstrap-dark"
+ },
+ {
+ "value": "bootstrap-dark-page",
+ "description": "bootstrap-dark-page"
+ },
+ {
+ "value": "bootstrap-compact",
+ "description": "bootstrap-compact"
+ },
+ {
+ "value": "bootstrap-compact-page",
+ "description": "bootstrap-compact-page"
+ },
+ {
+ "value": "page",
+ "description": "page"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "info",
+ "label": "info",
+ "description": "Info text to display. Use single, instead of double quotes for HTML attributes.",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "notice",
+ "label": "notice",
+ "description": "Notice to display",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "languageselection",
+ "label": "languageselection",
+ "description": "By default PrivateBin will guess the visitors language based on the browsers settings. Optionally you can enable the language selection menu, which uses a session cookie to store the choice until the browser is closed.",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "languagedefault",
+ "label": "languagedefault",
+ "description": "Set the language your installs defaults to, defaults to English. If this is set and language selection is disabled, this will be the only language.",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "urlshortener",
+ "label": "urlshortener",
+ "description": "URL shortener address to offer after a new paste is created. It is suggested to only use this with self-hosted shorteners as this will leak the pastes encryption key.",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "qrcode",
+ "label": "qrcode",
+ "description": "Let users create a QR code for sharing the paste URL with one click. It works both when a new paste is created and when you view a paste.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "PrivateBin Default"
+ },
+ {
+ "value": "true",
+ "description": "true"
+ },
+ {
+ "value": "false",
+ "description": "false"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "icon",
+ "label": "icon",
+ "description": "IP based icons are a weak mechanism to detect if a comment was from. a different user when the same username was used in a comment. It might be used to get the IP of a non anonymous comment poster if the server salt is leaked and a SHA256 HMAC rainbow table is generated for all (relevant) IPs.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "PrivateBin Default"
+ },
+ {
+ "value": "none",
+ "description": "none"
+ },
+ {
+ "value": "vizhash",
+ "description": "vizhash"
+ },
+ {
+ "value": "identicon",
+ "description": "identicon"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cspheader",
+ "label": "cspheader",
+ "description": "Content Security Policy headers allow a website to restrict what sources are allowed to be accessed in its context. You need to change this if you added custom scripts from third-party domains to your templates, e.g. tracking scripts or run your site behind certain DDoS-protection services. Check the documentation at https://content-security-policy.com/",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "zerobincompatibility",
+ "label": "zerobincompatibility",
+ "description": "Stay compatible with PrivateBin Alpha 0.19, less secure. f enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of sha256 in HMAC for the deletion token.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "PrivateBin Default"
+ },
+ {
+ "value": "true",
+ "description": "true"
+ },
+ {
+ "value": "false",
+ "description": "false"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "httpwarning",
+ "label": "httpwarning",
+ "description": "Enable or disable the warning message when the site is served over an insecure connection (insecure HTTP instead of HTTPS). Secure transport methods like Tor and I2P domains are automatically whitelisted. It is **strongly discouraged** to disable this.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "PrivateBin Default"
+ },
+ {
+ "value": "true",
+ "description": "true"
+ },
+ {
+ "value": "false",
+ "description": "false"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "compression",
+ "label": "compression",
+ "description": "Pick compression algorithm or disable it. Only applies to pastes/comments created after changing the setting.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "PrivateBin Default"
+ },
+ {
+ "value": "none",
+ "description": "none"
+ },
+ {
+ "value": "zlib",
+ "description": "zlib"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "expire",
+ "label": "Expire Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "default",
+ "label": "default",
+ "description": "Expire value that is selected per default",
+ "schema": {
+ "type": "string",
+ "default": "1week",
+ "required": true,
+ "enum": [
+ {
+ "value": "5min",
+ "description": "5min"
+ },
+ {
+ "value": "10min",
+ "description": "10min"
+ },
+ {
+ "value": "1hour",
+ "description": "1hour"
+ },
+ {
+ "value": "1day",
+ "description": "1day"
+ },
+ {
+ "value": "1week",
+ "description": "1week"
+ },
+ {
+ "value": "1month",
+ "description": "1month"
+ },
+ {
+ "value": "1year",
+ "description": "1year"
+ },
+ {
+ "value": "never",
+ "description": "never"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "traffic",
+ "label": "Traffic Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "limit",
+ "label": "limit",
+ "description": "Time limit between calls from the same IP address in seconds",
+ "schema": {
+ "type": "int",
+ "default": 10,
+ "required": true
+ }
+ },
+ {
+ "variable": "exempted",
+ "label": "exempted",
+ "description": "Set IPs addresses (v4 or v6) or subnets (CIDR) which are exempted from the rate-limit. Invalid IPs will be ignored. If multiple values are to be exempted, the list needs to be comma separated. Leave unset to disable exemptions.",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "creators",
+ "label": "creators",
+ "description": "If you want only some source IP addresses (v4 or v6) or subnets (CIDR) to be allowed to create pastes, set these here. Invalid IPs will be ignored. If multiple values are to be exempted, the list needs to be comma separated. Leave unset to allow anyone to create pastes.",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "header",
+ "label": "header",
+ "description": "If your website runs behind a reverse proxy or load balancer, set the HTTP header containing the visitors IP address, i.e. X_FORWARDED_FOR",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "purge",
+ "label": "Purge Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "limit",
+ "label": "limit",
+ "description": "Minimum time limit between two purgings of expired pastes, it is only triggered when pastes are created",
+ "schema": {
+ "type": "int",
+ "default": 300,
+ "required": true
+ }
+ },
+ {
+ "variable": "batchsize",
+ "label": "batchsize",
+ "description": "Maximum amount of expired pastes to delete in one purge. Set this to 0 to disable purging. Set it higher, if you are running a large site.",
+ "schema": {
+ "type": "int",
+ "default": 10,
+ "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": 10248,
+ "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": "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": "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": "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"
+ ],
+ "enum": [
+ {
+ "value": null,
+ "description": "No Certificate"
+ }
+ ],
+ "default": null,
+ "null": true
+ }
+ },
+ {
+ "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": 65534
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 82
+ }
+ },
+ {
+ "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": 82
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": [
+ {
+ "variable": "gpu",
+ "label": "Select GPU",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "$ref": [
+ "definitions/gpuConfiguration"
+ ],
+ "attrs": []
+ }
+ },
+ {
+ "variable": "workaround",
+ "label": "Workaround",
+ "schema": {
+ "type": "string",
+ "default": "workaround",
+ "hidden": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "scheduledBackups",
+ "label": "ScheduledBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backupschedule",
+ "label": "BackupSchedule",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "daily-backup",
+ "required": true
+ }
+ },
+ {
+ "variable": "schedule",
+ "label": "schedule",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "0 0 0 * * *"
+ }
+ },
+ {
+ "variable": "backupOwnerReference",
+ "label": "backupOwnerReference",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "self"
+ }
+ },
+ {
+ "variable": "immediate",
+ "label": "immediate",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "suspend",
+ "label": "suspend",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "manualBackups",
+ "label": "manualBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backup",
+ "label": "Backup",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dev/privatebin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nImportant:\nfor the complete changelog, please refer to the website
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update ignored by renovate (patch) (#16673)
\n
\n\nChore
\n\n- force bump to ensure up-to-date catalogs
\n
\n\nChore
\n\n\nChore
\n\n\nChore
\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
standardize ./img references (#16704)
\n \n- \n
lints some docs, uses front-matter instead of # h1, and fix list items in changelog (#16589)
\n \n
\nFix
\n\n- correct mistaken common references
\n
\n\nChore
\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
standardize ./img references (#16704)
\n \n- \n
lints some docs, uses front-matter instead of # h1, and fix list items in changelog (#16589)
\n \n
\nFix
\n\n- correct mistaken common references
\n
\n"
+ }
+}
\ No newline at end of file
diff --git a/dev/privatebin/item.yaml b/dev/privatebin/item.yaml
new file mode 100644
index 0000000..bd4a676
--- /dev/null
+++ b/dev/privatebin/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/privatebin.png
+categories:
+- productivity
+screenshots: []
diff --git a/dev/rtmpserver/5.0.14/CHANGELOG.md b/dev/rtmpserver/5.0.14/CHANGELOG.md
new file mode 100644
index 0000000..d389736
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/CHANGELOG.md
@@ -0,0 +1,18 @@
+---
+title: Changelog
+---
+
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+## [rtmpserver-5.0.14](https://github.com/truecharts/charts/compare/rtmpserver-5.0.13...rtmpserver-5.0.14) (2024-01-21)
+
+### Chore
+
+
+
+- move all incubator to dev
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
\ No newline at end of file
diff --git a/dev/rtmpserver/5.0.14/Chart.yaml b/dev/rtmpserver/5.0.14/Chart.yaml
new file mode 100644
index 0000000..e181a6f
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/Chart.yaml
@@ -0,0 +1,38 @@
+annotations:
+ max_scale_version: 23.10.2
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GameServers
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: dev
+apiVersion: v2
+appVersion: latest
+dependencies:
+ - name: common
+ version: 17.2.21
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: A video streaming server that supports RTMP, HLS, DASH out of the box.
+home: https://truecharts.org/charts/dev/rtmpserver
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/rtmpserver.png
+keywords:
+ - rtmpserver
+ - GameServers
+ - Network-Other
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: rtmpserver
+sources:
+ - https://github.com/TareqAlqutami/rtmp-hls-server
+ - https://github.com/truecharts/charts/tree/master/charts/dev/rtmpserver
+ - https://hub.docker.com/r/alqutami/rtmp-hls
+type: application
+version: 5.0.14
diff --git a/dev/rtmpserver/5.0.14/README.md b/dev/rtmpserver/5.0.14/README.md
new file mode 100644
index 0000000..2f00b55
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/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/dev/rtmpserver)
+
+**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/dev/rtmpserver/5.0.14/app-changelog.md b/dev/rtmpserver/5.0.14/app-changelog.md
new file mode 100644
index 0000000..09d1694
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/app-changelog.md
@@ -0,0 +1,11 @@
+
+
+## [rtmpserver-5.0.14](https://github.com/truecharts/charts/compare/rtmpserver-5.0.13...rtmpserver-5.0.14) (2024-01-21)
+
+### Chore
+
+
+
+- move all incubator to dev
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
\ No newline at end of file
diff --git a/dev/rtmpserver/5.0.14/app-readme.md b/dev/rtmpserver/5.0.14/app-readme.md
new file mode 100644
index 0000000..4453ac5
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/app-readme.md
@@ -0,0 +1,8 @@
+A video streaming server that supports RTMP, HLS, DASH out of the box.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/dev/rtmpserver](https://truecharts.org/charts/dev/rtmpserver)
+
+---
+
+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/dev/rtmpserver/5.0.14/charts/common-17.2.21.tgz b/dev/rtmpserver/5.0.14/charts/common-17.2.21.tgz
new file mode 100644
index 0000000..247e7e8
Binary files /dev/null and b/dev/rtmpserver/5.0.14/charts/common-17.2.21.tgz differ
diff --git a/dev/rtmpserver/5.0.14/ix_values.yaml b/dev/rtmpserver/5.0.14/ix_values.yaml
new file mode 100644
index 0000000..7dc1018
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/ix_values.yaml
@@ -0,0 +1,49 @@
+image:
+ pullPolicy: IfNotPresent
+ repository: alqutami/rtmp-hls
+ tag: latest@sha256:5bf1d59f1e9e0b98233f2f9842a1cb98e6cc9b1a5e31208c8088fac202bb1d56
+ingress:
+ rtmp:
+ autoLink: true
+persistence:
+ dash:
+ enabled: true
+ mountPath: /mnt/dash
+ hls:
+ enabled: true
+ mountPath: /mnt/hls
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsGroup: 0
+ runAsUser: 0
+service:
+ main:
+ ports:
+ main:
+ port: 10610
+ protocol: http
+ targetPort: 8080
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ protocol: tcp
+ targetPort: 1935
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ path: /stats.html
+ readiness:
+ path: /stats.html
+ startup:
+ path: /stats.html
diff --git a/dev/rtmpserver/5.0.14/questions.yaml b/dev/rtmpserver/5.0.14/questions.yaml
new file mode 100644
index 0000000..00ba8e1
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/questions.yaml
@@ -0,0 +1,3215 @@
+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"
+ path: /players/hls.html
+ stats:
+ protocols:
+ - "$kubernetes-resource_configmap_tcportal-open_protocol"
+ host:
+ - "$kubernetes-resource_configmap_tcportal-open_host"
+ ports:
+ - "$kubernetes-resource_configmap_tcportal-open_port"
+ path: /stats.html
+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: 10610
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The RTMP service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - 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: rtmp
+ label: RTMP 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: 1935
+ 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: dash
+ label: App Dash Storage
+ description: Stores the Application Dash.
+ 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: hls
+ label: App HLS Storage
+ description: Stores the Application HLS.
+ 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: rtmp
+ label: RTMP 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 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/dev/rtmpserver/5.0.14/templates/common.yaml b/dev/rtmpserver/5.0.14/templates/common.yaml
new file mode 100644
index 0000000..78d963f
--- /dev/null
+++ b/dev/rtmpserver/5.0.14/templates/common.yaml
@@ -0,0 +1,2 @@
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/dev/rtmpserver/5.0.14/values.yaml b/dev/rtmpserver/5.0.14/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/dev/rtmpserver/app_versions.json b/dev/rtmpserver/app_versions.json
new file mode 100644
index 0000000..65bb8c8
--- /dev/null
+++ b/dev/rtmpserver/app_versions.json
@@ -0,0 +1,5709 @@
+{
+ "5.0.14": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/dev/rtmpserver/5.0.14",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "latest_5.0.14",
+ "version": "5.0.14",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "23.10.2",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GameServers",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "dev"
+ },
+ "apiVersion": "v2",
+ "appVersion": "latest",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.2.21",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "A video streaming server that supports RTMP, HLS, DASH out of the box.",
+ "home": "https://truecharts.org/charts/dev/rtmpserver",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/rtmpserver.png",
+ "keywords": [
+ "rtmpserver",
+ "GameServers",
+ "Network-Other"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "rtmpserver",
+ "sources": [
+ "https://github.com/TareqAlqutami/rtmp-hls-server",
+ "https://github.com/truecharts/charts/tree/master/charts/dev/rtmpserver",
+ "https://hub.docker.com/r/alqutami/rtmp-hls"
+ ],
+ "type": "application",
+ "version": "5.0.14"
+ },
+ "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": "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"
+ ],
+ "path": "/players/hls.html"
+ },
+ "stats": {
+ "protocols": [
+ "$kubernetes-resource_configmap_tcportal-open_protocol"
+ ],
+ "host": [
+ "$kubernetes-resource_configmap_tcportal-open_host"
+ ],
+ "ports": [
+ "$kubernetes-resource_configmap_tcportal-open_port"
+ ],
+ "path": "/stats.html"
+ }
+ },
+ "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": "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": 10610,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The RTMP service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "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": "dash",
+ "label": "App Dash Storage",
+ "description": "Stores the Application Dash.",
+ "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": "hls",
+ "label": "App HLS Storage",
+ "description": "Stores the Application HLS.",
+ "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": "rtmp",
+ "label": "RTMP 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"
+ ],
+ "enum": [
+ {
+ "value": null,
+ "description": "No Certificate"
+ }
+ ],
+ "default": null,
+ "null": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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"
+ ],
+ "enum": [
+ {
+ "value": null,
+ "description": "No Certificate"
+ }
+ ],
+ "default": null,
+ "null": true
+ }
+ },
+ {
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "A video streaming server that supports RTMP, HLS, DASH out of the box.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dev/rtmpserver
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nImportant:\nfor the complete changelog, please refer to the website
\n\nChore
\n"
+ }
+}
\ No newline at end of file
diff --git a/dev/rtmpserver/item.yaml b/dev/rtmpserver/item.yaml
new file mode 100644
index 0000000..55f40b1
--- /dev/null
+++ b/dev/rtmpserver/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/rtmpserver.png
+categories:
+- GameServers
+screenshots: []
diff --git a/dev/testapp/0.0.1/CHANGELOG.md b/dev/testapp/0.0.1/CHANGELOG.md
new file mode 100644
index 0000000..57758a7
--- /dev/null
+++ b/dev/testapp/0.0.1/CHANGELOG.md
@@ -0,0 +1,13 @@
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+
+## [testapp-0.0.1]testapp-0.0.1 (2023-02-28)
+
+### Feat
+
+- Rework GUI templates ([#7545](https://github.com/truecharts/charts/issues/7545))
+
+
\ No newline at end of file
diff --git a/dev/testapp/0.0.1/Chart.yaml b/dev/testapp/0.0.1/Chart.yaml
new file mode 100644
index 0000000..c03b0e8
--- /dev/null
+++ b/dev/testapp/0.0.1/Chart.yaml
@@ -0,0 +1,32 @@
+apiVersion: v2
+appVersion: "0.20.2297"
+dependencies:
+ - name: common
+ repository: https://library-charts.truecharts.org
+ version: 12.2.0
+deprecated: false
+description: testing app for truecharts
+home: https://truecharts.org/charts/stable/jackett
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jackett.png
+keywords:
+ - jackett
+ - torrent
+ - usenet
+kubeVersion: ">=1.16.0-0"
+maintainers:
+ - email: info@truecharts.org
+ name: TrueCharts
+ url: https://truecharts.org
+name: testapp
+sources:
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jackett
+ - https://ghcr.io/onedr0p/jackett
+ - https://github.com/Jackett/Jackett
+type: application
+version: 0.0.1
+annotations:
+ truecharts.org/catagories: |
+ - media
+ - test
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/grade: U
diff --git a/dev/testapp/0.0.1/README.md b/dev/testapp/0.0.1/README.md
new file mode 100644
index 0000000..701942c
--- /dev/null
+++ b/dev/testapp/0.0.1/README.md
@@ -0,0 +1,27 @@
+# README
+
+## General Info
+
+TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE.
+However only installations using the TrueNAS SCALE Apps system are supported.
+
+For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/)
+
+**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%20Apps/Important-MUST-READ).
+- 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/dev/testapp/0.0.1/app-changelog.md b/dev/testapp/0.0.1/app-changelog.md
new file mode 100644
index 0000000..383af35
--- /dev/null
+++ b/dev/testapp/0.0.1/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [testapp-0.0.1]testapp-0.0.1 (2023-02-28)
+
+### Feat
+
+- Rework GUI templates ([#7545](https://github.com/truecharts/charts/issues/7545))
+
+
\ No newline at end of file
diff --git a/dev/testapp/0.0.1/app-readme.md b/dev/testapp/0.0.1/app-readme.md
new file mode 100644
index 0000000..26157fd
--- /dev/null
+++ b/dev/testapp/0.0.1/app-readme.md
@@ -0,0 +1,8 @@
+testing app for truecharts
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/dev/testapp](https://truecharts.org/charts/dev/testapp)
+
+---
+
+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/dev/testapp/0.0.1/charts/common-12.2.0.tgz b/dev/testapp/0.0.1/charts/common-12.2.0.tgz
new file mode 100644
index 0000000..3d927d9
Binary files /dev/null and b/dev/testapp/0.0.1/charts/common-12.2.0.tgz differ
diff --git a/dev/testapp/0.0.1/ix_values.yaml b/dev/testapp/0.0.1/ix_values.yaml
new file mode 100644
index 0000000..0aacb23
--- /dev/null
+++ b/dev/testapp/0.0.1/ix_values.yaml
@@ -0,0 +1,38 @@
+image:
+ repository: tccr.io/truecharts/jackett
+ pullPolicy: IfNotPresent
+ tag: 0.20.2297@sha256:4de1541011cb56935ba5a8e28a58f6cbcf62a903393dc94581eda0b6e2aa117c
+
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ targetPort: 9117
+ port: 9117
+
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ path: "/UI/Login"
+ readiness:
+ path: "/UI/Login"
+ startup:
+ path: "/UI/Login"
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+
+portal:
+ open:
+ enabled: true
diff --git a/dev/testapp/0.0.1/questions.yaml b/dev/testapp/0.0.1/questions.yaml
new file mode 100644
index 0000000..2efe88d
--- /dev/null
+++ b/dev/testapp/0.0.1/questions.yaml
@@ -0,0 +1,1855 @@
+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: 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..."
+ group: "General Settings"
+ 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: service
+ group: Networking and Services
+ label: Configure Service(s)
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - value: Simple
+ description: Deprecated CHANGE THIS
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: 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: 9117
+ required: true
+ - variable: serviceexpert
+ group: Networking and Services
+ label: Show Expert Config
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hostNetwork
+ group: Networking and Services
+ label: Host-Networking (Complicated)
+ schema:
+ type: boolean
+ default: false
+ - variable: externalInterfaces
+ description: Add External Interfaces
+ label: Add external Interfaces
+ group: Networking
+ schema:
+ type: list
+ items:
+ - variable: interfaceConfiguration
+ description: Interface Configuration
+ label: Interface Configuration
+ schema:
+ type: dict
+ $ref:
+ - "normalize/interfaceConfiguration"
+ attrs:
+ - variable: hostInterface
+ description: Please Specify Host Interface
+ label: Host Interface
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/interface"
+ - variable: ipam
+ description: Define how IP Address will be managed
+ label: IP Address Management
+ schema:
+ type: dict
+ required: true
+ attrs:
+ - variable: type
+ description: Specify type for IPAM
+ label: IPAM Type
+ schema:
+ type: string
+ required: true
+ enum:
+ - value: dhcp
+ description: Use DHCP
+ - value: static
+ description: Use Static IP
+ show_subquestions_if: static
+ subquestions:
+ - variable: staticIPConfigurations
+ label: Static IP Addresses
+ schema:
+ type: list
+ items:
+ - variable: staticIP
+ label: Static IP
+ schema:
+ type: ipaddr
+ cidr: true
+ - variable: staticRoutes
+ label: Static Routes
+ schema:
+ type: list
+ items:
+ - variable: staticRouteConfiguration
+ label: Static Route Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: destination
+ label: Destination
+ schema:
+ type: ipaddr
+ cidr: true
+ required: true
+ - variable: gateway
+ label: Gateway
+ schema:
+ type: ipaddr
+ cidr: false
+ required: true
+ - variable: 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
+ - 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: setPermissions
+ label: Automatic Permissions
+ description: Automatically set permissions on install
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: 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: 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: setPermissions
+ label: Automatic Permissions
+ description: Automatically set permissions on install
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: 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: ingress
+ label: ""
+ group: Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: clusterIssuer
+ label: clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below'
+ schema:
+ type: string
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["clusterIssuer", "=", ""]]
+ 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: clusterIssuer
+ 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: [["clusterIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: secretName
+ label: Use Custom Secret (Advanced)
+ schema:
+ show_if: [["clusterIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: (Advanced) Traefik Entrypoint
+ description: Entrypoint used by Traefik when using Traefik as Ingress Provider
+ schema:
+ type: string
+ default: websecure
+ required: true
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: middlewares
+ label: Traefik Middlewares
+ description: Add previously created Traefik Middlewares to this Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: 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: service
+ label: Linked Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Service Name
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: Service Port
+ schema:
+ type: int
+ - variable: clusterIssuer
+ label: clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below'
+ schema:
+ type: string
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ default: []
+ show_if: [["clusterIssuer", "=", ""]]
+ 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: clusterIssuer
+ 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: [["clusterIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: secretName
+ label: Use Custom Secret (Advanced)
+ schema:
+ type: string
+ show_if: [["clusterIssuer", "=", ""]]
+ default: ""
+ - variable: entrypoint
+ label: Traefik Entrypoint
+ description: Entrypoint used by Traefik when using Traefik as Ingress Provider
+ schema:
+ type: string
+ default: websecure
+ required: true
+ - variable: middlewares
+ label: Traefik Middlewares
+ description: Add previously created Traefik Middlewares to this Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: 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: "002"
+ - 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: 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/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 4000m
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: RAM
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 8Gi
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: requests
+ label: "Minimum Resources Required (request)"
+ schema:
+ additional_attrs: true
+ type: dict
+ hidden: true
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 10m
+ 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/docs/manual/SCALE%20Apps/indepth/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: hostPath
+ hidden: true
+ - variable: readOnly
+ label: readOnly
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Device Path
+ description: Path to the device on the host system
+ schema:
+ type: path
+ - variable: mountPath
+ label: Container Device Path
+ description: Path inside the container the device is mounted
+ schema:
+ type: string
+ default: "/dev/ttyACM0"
+ # Specify GPU configuration
+ - variable: scaleGPU
+ label: GPU Configuration
+ group: Resources and Devices
+ schema:
+ type: dict
+ $ref:
+ - "definitions/gpuConfiguration"
+ attrs: []
+# - variable: 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: cnpg
+ group: Postgresql
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 2
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walsize
+ label: Walsize
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: pooler
+ label: "Pooler"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 2
+ - variable: Monitoring
+ label: "Metrics"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: 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
+ - 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: 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: 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/dev/testapp/0.0.1/templates/common.yaml b/dev/testapp/0.0.1/templates/common.yaml
new file mode 100644
index 0000000..0386888
--- /dev/null
+++ b/dev/testapp/0.0.1/templates/common.yaml
@@ -0,0 +1 @@
+{{- include "tc.v1.common.loader.all" . -}}
diff --git a/dev/testapp/0.0.1/values.yaml b/dev/testapp/0.0.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/dev/testapp/app_versions.json b/dev/testapp/app_versions.json
new file mode 100644
index 0000000..2c1be2c
--- /dev/null
+++ b/dev/testapp/app_versions.json
@@ -0,0 +1,3185 @@
+{
+ "0.0.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/dev/testapp/0.0.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/gpuConfiguration",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.20.2297_0.0.1",
+ "version": "0.0.1",
+ "chart_metadata": {
+ "apiVersion": "v2",
+ "appVersion": "0.20.2297",
+ "dependencies": [
+ {
+ "name": "common",
+ "repository": "https://library-charts.truecharts.org",
+ "version": "12.2.0"
+ }
+ ],
+ "deprecated": false,
+ "description": "testing app for truecharts",
+ "home": "https://truecharts.org/charts/stable/jackett",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jackett.png",
+ "keywords": [
+ "jackett",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.16.0-0",
+ "maintainers": [
+ {
+ "email": "info@truecharts.org",
+ "name": "TrueCharts",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "testapp",
+ "sources": [
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jackett",
+ "https://ghcr.io/onedr0p/jackett",
+ "https://github.com/Jackett/Jackett"
+ ],
+ "type": "application",
+ "version": "0.0.1",
+ "annotations": {
+ "truecharts.org/catagories": "- media\n- test\n",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/grade": "U"
+ }
+ },
+ "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": "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": "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...",
+ "group": "General Settings",
+ "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": "service",
+ "group": "Networking and Services",
+ "label": "Configure Service(s)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Service",
+ "description": "The Primary service on which the healthcheck runs, often the webUI",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ },
+ {
+ "value": "Simple",
+ "description": "Deprecated CHANGE THIS"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "loadBalancerIP",
+ "label": "LoadBalancer IP",
+ "description": "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "LoadBalancer"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "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": 9117,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "serviceexpert",
+ "group": "Networking and Services",
+ "label": "Show Expert Config",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "hostNetwork",
+ "group": "Networking and Services",
+ "label": "Host-Networking (Complicated)",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "externalInterfaces",
+ "description": "Add External Interfaces",
+ "label": "Add external Interfaces",
+ "group": "Networking",
+ "schema": {
+ "type": "list",
+ "items": [
+ {
+ "variable": "interfaceConfiguration",
+ "description": "Interface Configuration",
+ "label": "Interface Configuration",
+ "schema": {
+ "type": "dict",
+ "$ref": [
+ "normalize/interfaceConfiguration"
+ ],
+ "attrs": [
+ {
+ "variable": "hostInterface",
+ "description": "Please Specify Host Interface",
+ "label": "Host Interface",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/interface"
+ ],
+ "enum": []
+ }
+ },
+ {
+ "variable": "ipam",
+ "description": "Define how IP Address will be managed",
+ "label": "IP Address Management",
+ "schema": {
+ "type": "dict",
+ "required": true,
+ "attrs": [
+ {
+ "variable": "type",
+ "description": "Specify type for IPAM",
+ "label": "IPAM Type",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "enum": [
+ {
+ "value": "dhcp",
+ "description": "Use DHCP"
+ },
+ {
+ "value": "static",
+ "description": "Use Static IP"
+ }
+ ],
+ "show_subquestions_if": "static",
+ "subquestions": [
+ {
+ "variable": "staticIPConfigurations",
+ "label": "Static IP Addresses",
+ "schema": {
+ "type": "list",
+ "items": [
+ {
+ "variable": "staticIP",
+ "label": "Static IP",
+ "schema": {
+ "type": "ipaddr",
+ "cidr": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "staticRoutes",
+ "label": "Static Routes",
+ "schema": {
+ "type": "list",
+ "items": [
+ {
+ "variable": "staticRouteConfiguration",
+ "label": "Static Route Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "destination",
+ "label": "Destination",
+ "schema": {
+ "type": "ipaddr",
+ "cidr": true,
+ "required": true
+ }
+ },
+ {
+ "variable": "gateway",
+ "label": "Gateway",
+ "schema": {
+ "type": "ipaddr",
+ "cidr": false,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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"
+ }
+ ]
+ }
+ },
+ {
+ "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": "setPermissions",
+ "label": "Automatic Permissions",
+ "description": "Automatically set permissions on install",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "hostPath"
+ ]
+ ],
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "readOnly",
+ "label": "Read Only",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "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": "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": "setPermissions",
+ "label": "Automatic Permissions",
+ "description": "Automatically set permissions on install",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "hostPath"
+ ]
+ ],
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "readOnly",
+ "label": "Read Only",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "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": "ingress",
+ "label": "",
+ "group": "Ingress",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Ingress",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Ingress",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "hosts",
+ "label": "Hosts",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "hostEntry",
+ "label": "Host",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "host",
+ "label": "HostName",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ },
+ {
+ "variable": "paths",
+ "label": "Paths",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "pathEntry",
+ "label": "Host",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "Path",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "/"
+ }
+ },
+ {
+ "variable": "pathType",
+ "label": "Path Type",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "Prefix"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "clusterIssuer",
+ "label": "clusterIssuer",
+ "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "tls",
+ "label": "TLS-Settings",
+ "schema": {
+ "type": "list",
+ "show_if": [
+ [
+ "clusterIssuer",
+ "=",
+ ""
+ ]
+ ],
+ "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": "clusterIssuer",
+ "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": [
+ [
+ "clusterIssuer",
+ "=",
+ ""
+ ]
+ ],
+ "type": "int",
+ "$ref": [
+ "definitions/certificate"
+ ],
+ "enum": [
+ {
+ "value": null,
+ "description": "No Certificate"
+ }
+ ],
+ "default": null,
+ "null": true
+ }
+ },
+ {
+ "variable": "secretName",
+ "label": "Use Custom Secret (Advanced)",
+ "schema": {
+ "show_if": [
+ [
+ "clusterIssuer",
+ "=",
+ ""
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "entrypoint",
+ "label": "(Advanced) Traefik Entrypoint",
+ "description": "Entrypoint used by Traefik when using Traefik as Ingress Provider",
+ "schema": {
+ "type": "string",
+ "default": "websecure",
+ "required": true
+ }
+ },
+ {
+ "variable": "ingressClassName",
+ "label": "(Advanced/Optional) IngressClass Name",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "middlewares",
+ "label": "Traefik Middlewares",
+ "description": "Add previously created Traefik Middlewares to this Ingress",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "name",
+ "label": "Name",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "service",
+ "label": "Linked Service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Service Name",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "port",
+ "label": "Service Port",
+ "schema": {
+ "type": "int"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "clusterIssuer",
+ "label": "clusterIssuer",
+ "description": "add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "tls",
+ "label": "TLS-Settings",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "clusterIssuer",
+ "=",
+ ""
+ ]
+ ],
+ "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": "clusterIssuer",
+ "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": [
+ [
+ "clusterIssuer",
+ "=",
+ ""
+ ]
+ ],
+ "type": "int",
+ "$ref": [
+ "definitions/certificate"
+ ],
+ "enum": [
+ {
+ "value": null,
+ "description": "No Certificate"
+ }
+ ],
+ "default": null,
+ "null": true
+ }
+ },
+ {
+ "variable": "secretName",
+ "label": "Use Custom Secret (Advanced)",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "clusterIssuer",
+ "=",
+ ""
+ ]
+ ],
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "entrypoint",
+ "label": "Traefik Entrypoint",
+ "description": "Entrypoint used by Traefik when using Traefik as Ingress Provider",
+ "schema": {
+ "type": "string",
+ "default": "websecure",
+ "required": true
+ }
+ },
+ {
+ "variable": "middlewares",
+ "label": "Traefik Middlewares",
+ "description": "Add previously created Traefik Middlewares to this Ingress",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "name",
+ "label": "Name",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "002"
+ }
+ },
+ {
+ "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": "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/docs/manual/SCALE%20Apps/indepth/validation",
+ "schema": {
+ "type": "string",
+ "default": "4000m",
+ "valid_chars": "^(?!^0(\\.0|m|)$)([0-9]+)(\\.[0-9]|m?)$"
+ }
+ },
+ {
+ "variable": "memory",
+ "label": "RAM",
+ "description": "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation",
+ "schema": {
+ "type": "string",
+ "default": "8Gi",
+ "valid_chars": "^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "requests",
+ "label": "Minimum Resources Required (request)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "hidden": true,
+ "attrs": [
+ {
+ "variable": "cpu",
+ "label": "CPU",
+ "description": "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation",
+ "schema": {
+ "type": "string",
+ "default": "10m",
+ "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/docs/manual/SCALE%20Apps/indepth/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": "hostPath",
+ "hidden": true
+ }
+ },
+ {
+ "variable": "readOnly",
+ "label": "readOnly",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "hostPath",
+ "label": "Host Device Path",
+ "description": "Path to the device on the host system",
+ "schema": {
+ "type": "path"
+ }
+ },
+ {
+ "variable": "mountPath",
+ "label": "Container Device Path",
+ "description": "Path inside the container the device is mounted",
+ "schema": {
+ "type": "string",
+ "default": "/dev/ttyACM0"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "scaleGPU",
+ "label": "GPU Configuration",
+ "group": "Resources and Devices",
+ "schema": {
+ "type": "dict",
+ "$ref": [
+ "definitions/gpuConfiguration"
+ ],
+ "attrs": []
+ }
+ },
+ {
+ "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": "cnpg",
+ "group": "Postgresql",
+ "label": "",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 2
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ },
+ {
+ "variable": "walsize",
+ "label": "Walsize",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 2
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "Monitoring",
+ "label": "Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "addons",
+ "group": "Addons",
+ "label": "",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "vpn",
+ "label": "VPN",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type",
+ "schema": {
+ "type": "string",
+ "default": "disabled",
+ "enum": [
+ {
+ "value": "disabled",
+ "description": "disabled"
+ },
+ {
+ "value": "gluetun",
+ "description": "Gluetun"
+ },
+ {
+ "value": "tailscale",
+ "description": "Tailscale"
+ },
+ {
+ "value": "openvpn",
+ "description": "OpenVPN (Deprecated)"
+ },
+ {
+ "value": "wireguard",
+ "description": "Wireguard (Deprecated)"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "openvpn",
+ "label": "OpenVPN Settings",
+ "schema": {
+ "type": "dict",
+ "show_if": [
+ [
+ "type",
+ "=",
+ "openvpn"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "Authentication Username (Optional)",
+ "description": "Authentication Username, Optional",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "Authentication Password",
+ "description": "Authentication Credentials",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "tailscale",
+ "label": "Tailscale Settings",
+ "schema": {
+ "type": "dict",
+ "show_if": [
+ [
+ "type",
+ "=",
+ "tailscale"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "authkey",
+ "label": "Authentication Key",
+ "description": "Provide an auth key to automatically authenticate the node as your user account.",
+ "schema": {
+ "type": "string",
+ "private": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "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
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": "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": "testing app for truecharts
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dev/testapp
\n
\nTrueCharts 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": "README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "Important:\nfor the complete changelog, please refer to the website
\n[testapp-0.0.1]testapp-0.0.1 (2023-02-28)
\nFeat
\n\n- Rework GUI templates (#7545)
\n
"
+ }
+}
\ No newline at end of file
diff --git a/dev/testapp/item.yaml b/dev/testapp/item.yaml
new file mode 100644
index 0000000..aa4ad43
--- /dev/null
+++ b/dev/testapp/item.yaml
@@ -0,0 +1,5 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/jackett.png
+categories:
+- media
+- test
+
diff --git a/stable/firefox/10.1.0/.helmignore b/stable/firefox/10.1.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/10.1.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/10.1.0/CHANGELOG.md b/stable/firefox/10.1.0/CHANGELOG.md
new file mode 100644
index 0000000..da04ec3
--- /dev/null
+++ b/stable/firefox/10.1.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+## [firefox-10.0.9](https://github.com/truecharts/charts/compare/firefox-10.0.8...firefox-10.0.9) (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))
+
+
+## [firefox-10.0.8](https://github.com/truecharts/charts/compare/firefox-10.0.7...firefox-10.0.8) (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))
+
+
+## [firefox-10.0.7](https://github.com/truecharts/charts/compare/firefox-10.0.6...firefox-10.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))
+
+
+## [firefox-10.0.6](https://github.com/truecharts/charts/compare/firefox-10.0.5...firefox-10.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))
+
+
+## [firefox-10.0.5](https://github.com/truecharts/charts/compare/firefox-10.0.4...firefox-10.0.5) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [firefox-10.0.4](https://github.com/truecharts/charts/compare/firefox-10.0.3...firefox-10.0.4) (2024-01-21)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@ac3c881](https://github.com/ac3c881) by renovate ([#17351](https://github.com/truecharts/charts/issues/17351))
+
+
+## [firefox-10.0.3](https://github.com/truecharts/charts/compare/firefox-10.0.2...firefox-10.0.3) (2024-01-15)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@34df0f7](https://github.com/34df0f7) by renovate ([#17232](https://github.com/truecharts/charts/issues/17232))
+
+
+
+
+## [firefox-10.0.2](https://github.com/truecharts/charts/compare/firefox-10.0.1...firefox-10.0.2) (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))
+
+
+## [firefox-10.0.1](https://github.com/truecharts/charts/compare/firefox-10.0.0...firefox-10.0.1) (2024-01-08)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@2bf06b5](https://github.com/2bf06b5) by renovate ([#16940](https://github.com/truecharts/charts/issues/16940))
+
+
+## [firefox-10.0.0](https://github.com/truecharts/charts/compare/firefox-9.1.5...firefox-10.0.0) (2024-01-03)
+
+### Chore
+
+
diff --git a/stable/firefox/10.1.0/Chart.yaml b/stable/firefox/10.1.0/Chart.yaml
new file mode 100644
index 0000000..7c1a066
--- /dev/null
+++ b/stable/firefox/10.1.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 120.0.1
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 10.1.0
diff --git a/stable/firefox/10.1.0/README.md b/stable/firefox/10.1.0/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/10.1.0/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/firefox)
+
+**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/firefox/10.1.0/app-readme.md b/stable/firefox/10.1.0/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/10.1.0/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/10.1.0/charts/common-17.4.2.tgz b/stable/firefox/10.1.0/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/firefox/10.1.0/charts/common-17.4.2.tgz differ
diff --git a/stable/firefox/10.1.0/ix_values.yaml b/stable/firefox/10.1.0/ix_values.yaml
new file mode 100644
index 0000000..9749061
--- /dev/null
+++ b/stable/firefox/10.1.0/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 120.0.1@sha256:ac3c8817dcbf6855b05e55db4799e36a8b935bf57fcb27f9fa3ff71263ddd3de
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/10.1.0/questions.yaml b/stable/firefox/10.1.0/questions.yaml
new file mode 100644
index 0000000..938e88a
--- /dev/null
+++ b/stable/firefox/10.1.0/questions.yaml
@@ -0,0 +1,2879 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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/firefox/10.1.0/templates/NOTES.txt b/stable/firefox/10.1.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/10.1.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/10.1.0/templates/common.yaml b/stable/firefox/10.1.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/10.1.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/10.1.0/values.yaml b/stable/firefox/10.1.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/10.2.0/.helmignore b/stable/firefox/10.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/10.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/10.2.0/CHANGELOG.md b/stable/firefox/10.2.0/CHANGELOG.md
new file mode 100644
index 0000000..e3a653f
--- /dev/null
+++ b/stable/firefox/10.2.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+## [firefox-10.0.9](https://github.com/truecharts/charts/compare/firefox-10.0.8...firefox-10.0.9) (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))
+
+
+## [firefox-10.0.8](https://github.com/truecharts/charts/compare/firefox-10.0.7...firefox-10.0.8) (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))
+
+
+## [firefox-10.0.7](https://github.com/truecharts/charts/compare/firefox-10.0.6...firefox-10.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))
+
+
+## [firefox-10.0.6](https://github.com/truecharts/charts/compare/firefox-10.0.5...firefox-10.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))
+
+
+## [firefox-10.0.5](https://github.com/truecharts/charts/compare/firefox-10.0.4...firefox-10.0.5) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [firefox-10.0.4](https://github.com/truecharts/charts/compare/firefox-10.0.3...firefox-10.0.4) (2024-01-21)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@ac3c881](https://github.com/ac3c881) by renovate ([#17351](https://github.com/truecharts/charts/issues/17351))
+
+
+## [firefox-10.0.3](https://github.com/truecharts/charts/compare/firefox-10.0.2...firefox-10.0.3) (2024-01-15)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@34df0f7](https://github.com/34df0f7) by renovate ([#17232](https://github.com/truecharts/charts/issues/17232))
+
+
+
+
+## [firefox-10.0.2](https://github.com/truecharts/charts/compare/firefox-10.0.1...firefox-10.0.2) (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))
+
+
+## [firefox-10.0.1](https://github.com/truecharts/charts/compare/firefox-10.0.0...firefox-10.0.1) (2024-01-08)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@2bf06b5](https://github.com/2bf06b5) by renovate ([#16940](https://github.com/truecharts/charts/issues/16940))
+
+
+## [firefox-10.0.0](https://github.com/truecharts/charts/compare/firefox-9.1.5...firefox-10.0.0) (2024-01-03)
+
+### Chore
+
diff --git a/stable/firefox/10.2.0/Chart.yaml b/stable/firefox/10.2.0/Chart.yaml
new file mode 100644
index 0000000..4352b17
--- /dev/null
+++ b/stable/firefox/10.2.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 120.0.1
+dependencies:
+ - name: common
+ version: 17.5.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 10.2.0
diff --git a/stable/firefox/10.2.0/README.md b/stable/firefox/10.2.0/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/10.2.0/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/firefox)
+
+**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/firefox/10.2.0/app-readme.md b/stable/firefox/10.2.0/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/10.2.0/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/10.2.0/charts/common-17.5.0.tgz b/stable/firefox/10.2.0/charts/common-17.5.0.tgz
new file mode 100644
index 0000000..3a55348
Binary files /dev/null and b/stable/firefox/10.2.0/charts/common-17.5.0.tgz differ
diff --git a/stable/firefox/10.2.0/ix_values.yaml b/stable/firefox/10.2.0/ix_values.yaml
new file mode 100644
index 0000000..9749061
--- /dev/null
+++ b/stable/firefox/10.2.0/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 120.0.1@sha256:ac3c8817dcbf6855b05e55db4799e36a8b935bf57fcb27f9fa3ff71263ddd3de
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/10.2.0/questions.yaml b/stable/firefox/10.2.0/questions.yaml
new file mode 100644
index 0000000..938e88a
--- /dev/null
+++ b/stable/firefox/10.2.0/questions.yaml
@@ -0,0 +1,2879 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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/firefox/10.2.0/templates/NOTES.txt b/stable/firefox/10.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/10.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/10.2.0/templates/common.yaml b/stable/firefox/10.2.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/10.2.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/10.2.0/values.yaml b/stable/firefox/10.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/11.2.3/.helmignore b/stable/firefox/11.2.3/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/11.2.3/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/11.2.3/CHANGELOG.md b/stable/firefox/11.2.3/CHANGELOG.md
new file mode 100644
index 0000000..80f8e2d
--- /dev/null
+++ b/stable/firefox/11.2.3/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-11.2.3](https://github.com/truecharts/charts/compare/firefox-11.2.2...firefox-11.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [firefox-11.2.2](https://github.com/truecharts/charts/compare/firefox-11.2.0...firefox-11.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [firefox-10.0.9](https://github.com/truecharts/charts/compare/firefox-10.0.8...firefox-10.0.9) (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))
+
+
+## [firefox-10.0.8](https://github.com/truecharts/charts/compare/firefox-10.0.7...firefox-10.0.8) (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))
+
+
+## [firefox-10.0.7](https://github.com/truecharts/charts/compare/firefox-10.0.6...firefox-10.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))
+
+
+## [firefox-10.0.6](https://github.com/truecharts/charts/compare/firefox-10.0.5...firefox-10.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))
+
+
+## [firefox-10.0.5](https://github.com/truecharts/charts/compare/firefox-10.0.4...firefox-10.0.5) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [firefox-10.0.4](https://github.com/truecharts/charts/compare/firefox-10.0.3...firefox-10.0.4) (2024-01-21)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@ac3c881](https://github.com/ac3c881) by renovate ([#17351](https://github.com/truecharts/charts/issues/17351))
+
+
+## [firefox-10.0.3](https://github.com/truecharts/charts/compare/firefox-10.0.2...firefox-10.0.3) (2024-01-15)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@34df0f7](https://github.com/34df0f7) by renovate ([#17232](https://github.com/truecharts/charts/issues/17232))
diff --git a/stable/firefox/11.2.3/Chart.yaml b/stable/firefox/11.2.3/Chart.yaml
new file mode 100644
index 0000000..d2d845d
--- /dev/null
+++ b/stable/firefox/11.2.3/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 120.0.1
+dependencies:
+ - name: common
+ version: 18.1.6
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 11.2.3
diff --git a/stable/firefox/11.2.3/README.md b/stable/firefox/11.2.3/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/11.2.3/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/firefox)
+
+**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/firefox/11.2.3/app-readme.md b/stable/firefox/11.2.3/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/11.2.3/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/11.2.3/charts/common-18.1.6.tgz b/stable/firefox/11.2.3/charts/common-18.1.6.tgz
new file mode 100644
index 0000000..3ada4bb
Binary files /dev/null and b/stable/firefox/11.2.3/charts/common-18.1.6.tgz differ
diff --git a/stable/firefox/11.2.3/ix_values.yaml b/stable/firefox/11.2.3/ix_values.yaml
new file mode 100644
index 0000000..9749061
--- /dev/null
+++ b/stable/firefox/11.2.3/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 120.0.1@sha256:ac3c8817dcbf6855b05e55db4799e36a8b935bf57fcb27f9fa3ff71263ddd3de
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/11.2.3/questions.yaml b/stable/firefox/11.2.3/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/11.2.3/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/11.2.3/templates/NOTES.txt b/stable/firefox/11.2.3/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/11.2.3/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/11.2.3/templates/common.yaml b/stable/firefox/11.2.3/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/11.2.3/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/11.2.3/values.yaml b/stable/firefox/11.2.3/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/11.3.0/.helmignore b/stable/firefox/11.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/11.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/11.3.0/CHANGELOG.md b/stable/firefox/11.3.0/CHANGELOG.md
new file mode 100644
index 0000000..e5a9650
--- /dev/null
+++ b/stable/firefox/11.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-11.3.0](https://github.com/truecharts/charts/compare/firefox-11.2.3...firefox-11.3.0) (2024-03-06)
+
+### Chore
+
+
+
+- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943))
+
+
+## [firefox-11.2.3](https://github.com/truecharts/charts/compare/firefox-11.2.2...firefox-11.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [firefox-11.2.2](https://github.com/truecharts/charts/compare/firefox-11.2.0...firefox-11.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [firefox-10.0.9](https://github.com/truecharts/charts/compare/firefox-10.0.8...firefox-10.0.9) (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))
+
+
+## [firefox-10.0.8](https://github.com/truecharts/charts/compare/firefox-10.0.7...firefox-10.0.8) (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))
+
+
+## [firefox-10.0.7](https://github.com/truecharts/charts/compare/firefox-10.0.6...firefox-10.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))
+
+
+## [firefox-10.0.6](https://github.com/truecharts/charts/compare/firefox-10.0.5...firefox-10.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))
+
+
+## [firefox-10.0.5](https://github.com/truecharts/charts/compare/firefox-10.0.4...firefox-10.0.5) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [firefox-10.0.4](https://github.com/truecharts/charts/compare/firefox-10.0.3...firefox-10.0.4) (2024-01-21)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 120.0.1[@ac3c881](https://github.com/ac3c881) by renovate ([#17351](https://github.com/truecharts/charts/issues/17351))
diff --git a/stable/firefox/11.3.0/Chart.yaml b/stable/firefox/11.3.0/Chart.yaml
new file mode 100644
index 0000000..d96e8bd
--- /dev/null
+++ b/stable/firefox/11.3.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 120.0.1
+dependencies:
+ - name: common
+ version: 18.2.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 11.3.0
diff --git a/stable/firefox/11.3.0/README.md b/stable/firefox/11.3.0/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/11.3.0/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/firefox)
+
+**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/firefox/11.3.0/app-readme.md b/stable/firefox/11.3.0/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/11.3.0/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/11.3.0/charts/common-18.2.0.tgz b/stable/firefox/11.3.0/charts/common-18.2.0.tgz
new file mode 100644
index 0000000..a5b3906
Binary files /dev/null and b/stable/firefox/11.3.0/charts/common-18.2.0.tgz differ
diff --git a/stable/firefox/11.3.0/ix_values.yaml b/stable/firefox/11.3.0/ix_values.yaml
new file mode 100644
index 0000000..9749061
--- /dev/null
+++ b/stable/firefox/11.3.0/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 120.0.1@sha256:ac3c8817dcbf6855b05e55db4799e36a8b935bf57fcb27f9fa3ff71263ddd3de
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/11.3.0/questions.yaml b/stable/firefox/11.3.0/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/11.3.0/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/11.3.0/templates/NOTES.txt b/stable/firefox/11.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/11.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/11.3.0/templates/common.yaml b/stable/firefox/11.3.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/11.3.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/11.3.0/values.yaml b/stable/firefox/11.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/11.4.0/.helmignore b/stable/firefox/11.4.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/11.4.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/11.4.0/CHANGELOG.md b/stable/firefox/11.4.0/CHANGELOG.md
new file mode 100644
index 0000000..2cad7fc
--- /dev/null
+++ b/stable/firefox/11.4.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-11.4.0](https://github.com/truecharts/charts/compare/firefox-11.3.0...firefox-11.4.0) (2024-03-07)
+
+### Chore
+
+
+
+- update container image common to v19.0.0[@eef2062](https://github.com/eef2062) by renovate ([#18956](https://github.com/truecharts/charts/issues/18956))
+
+
+## [firefox-11.3.0](https://github.com/truecharts/charts/compare/firefox-11.2.3...firefox-11.3.0) (2024-03-06)
+
+### Chore
+
+
+
+- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943))
+
+
+## [firefox-11.2.3](https://github.com/truecharts/charts/compare/firefox-11.2.2...firefox-11.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [firefox-11.2.2](https://github.com/truecharts/charts/compare/firefox-11.2.0...firefox-11.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [firefox-10.0.9](https://github.com/truecharts/charts/compare/firefox-10.0.8...firefox-10.0.9) (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))
+
+
+## [firefox-10.0.8](https://github.com/truecharts/charts/compare/firefox-10.0.7...firefox-10.0.8) (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))
+
+
+## [firefox-10.0.7](https://github.com/truecharts/charts/compare/firefox-10.0.6...firefox-10.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))
+
+
+## [firefox-10.0.6](https://github.com/truecharts/charts/compare/firefox-10.0.5...firefox-10.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))
+
+
+## [firefox-10.0.5](https://github.com/truecharts/charts/compare/firefox-10.0.4...firefox-10.0.5) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
diff --git a/stable/firefox/11.4.0/Chart.yaml b/stable/firefox/11.4.0/Chart.yaml
new file mode 100644
index 0000000..54f16ec
--- /dev/null
+++ b/stable/firefox/11.4.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 120.0.1
+dependencies:
+ - name: common
+ version: 19.0.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 11.4.0
diff --git a/stable/firefox/11.4.0/README.md b/stable/firefox/11.4.0/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/11.4.0/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/firefox)
+
+**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/firefox/11.4.0/app-changelog.md b/stable/firefox/11.4.0/app-changelog.md
new file mode 100644
index 0000000..b1ad29b
--- /dev/null
+++ b/stable/firefox/11.4.0/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [firefox-11.4.0](https://github.com/truecharts/charts/compare/firefox-11.3.0...firefox-11.4.0) (2024-03-07)
+
+### Chore
+
+
+
+- update container image common to v19.0.0[@eef2062](https://github.com/eef2062) by renovate ([#18956](https://github.com/truecharts/charts/issues/18956))
\ No newline at end of file
diff --git a/stable/firefox/11.4.0/app-readme.md b/stable/firefox/11.4.0/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/11.4.0/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/11.4.0/charts/common-19.0.0.tgz b/stable/firefox/11.4.0/charts/common-19.0.0.tgz
new file mode 100644
index 0000000..d8852c1
Binary files /dev/null and b/stable/firefox/11.4.0/charts/common-19.0.0.tgz differ
diff --git a/stable/firefox/11.4.0/ix_values.yaml b/stable/firefox/11.4.0/ix_values.yaml
new file mode 100644
index 0000000..9749061
--- /dev/null
+++ b/stable/firefox/11.4.0/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 120.0.1@sha256:ac3c8817dcbf6855b05e55db4799e36a8b935bf57fcb27f9fa3ff71263ddd3de
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/11.4.0/questions.yaml b/stable/firefox/11.4.0/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/11.4.0/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/11.4.0/templates/NOTES.txt b/stable/firefox/11.4.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/11.4.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/11.4.0/templates/common.yaml b/stable/firefox/11.4.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/11.4.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/11.4.0/values.yaml b/stable/firefox/11.4.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/11.4.1/.helmignore b/stable/firefox/11.4.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/11.4.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/11.4.1/CHANGELOG.md b/stable/firefox/11.4.1/CHANGELOG.md
new file mode 100644
index 0000000..7aa425d
--- /dev/null
+++ b/stable/firefox/11.4.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-11.4.1](https://github.com/truecharts/charts/compare/firefox-11.4.0...firefox-11.4.1) (2024-03-07)
+
+### Chore
+
+
+
+- bump everything to trigger re-release
+
+
+## [firefox-11.4.0](https://github.com/truecharts/charts/compare/firefox-11.3.0...firefox-11.4.0) (2024-03-07)
+
+### Chore
+
+
+
+- update container image common to v19.0.0[@eef2062](https://github.com/eef2062) by renovate ([#18956](https://github.com/truecharts/charts/issues/18956))
+
+
+## [firefox-11.3.0](https://github.com/truecharts/charts/compare/firefox-11.2.3...firefox-11.3.0) (2024-03-06)
+
+### Chore
+
+
+
+- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943))
+
+
+## [firefox-11.2.3](https://github.com/truecharts/charts/compare/firefox-11.2.2...firefox-11.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [firefox-11.2.2](https://github.com/truecharts/charts/compare/firefox-11.2.0...firefox-11.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [firefox-10.0.9](https://github.com/truecharts/charts/compare/firefox-10.0.8...firefox-10.0.9) (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))
+
+
+## [firefox-10.0.8](https://github.com/truecharts/charts/compare/firefox-10.0.7...firefox-10.0.8) (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))
+
+
+## [firefox-10.0.7](https://github.com/truecharts/charts/compare/firefox-10.0.6...firefox-10.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))
+
+
+## [firefox-10.0.6](https://github.com/truecharts/charts/compare/firefox-10.0.5...firefox-10.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))
diff --git a/stable/firefox/11.4.1/Chart.yaml b/stable/firefox/11.4.1/Chart.yaml
new file mode 100644
index 0000000..b3f7d93
--- /dev/null
+++ b/stable/firefox/11.4.1/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 120.0.1
+dependencies:
+ - name: common
+ version: 19.0.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 11.4.1
diff --git a/stable/firefox/11.4.1/README.md b/stable/firefox/11.4.1/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/11.4.1/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/firefox)
+
+**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/firefox/11.4.1/app-readme.md b/stable/firefox/11.4.1/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/11.4.1/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/11.4.1/charts/common-19.0.0.tgz b/stable/firefox/11.4.1/charts/common-19.0.0.tgz
new file mode 100644
index 0000000..6b07782
Binary files /dev/null and b/stable/firefox/11.4.1/charts/common-19.0.0.tgz differ
diff --git a/stable/firefox/11.4.1/ix_values.yaml b/stable/firefox/11.4.1/ix_values.yaml
new file mode 100644
index 0000000..9749061
--- /dev/null
+++ b/stable/firefox/11.4.1/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 120.0.1@sha256:ac3c8817dcbf6855b05e55db4799e36a8b935bf57fcb27f9fa3ff71263ddd3de
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/11.4.1/questions.yaml b/stable/firefox/11.4.1/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/11.4.1/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/11.4.1/templates/NOTES.txt b/stable/firefox/11.4.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/11.4.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/11.4.1/templates/common.yaml b/stable/firefox/11.4.1/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/11.4.1/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/11.4.1/values.yaml b/stable/firefox/11.4.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/12.2.0/.helmignore b/stable/firefox/12.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/12.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/12.2.0/CHANGELOG.md b/stable/firefox/12.2.0/CHANGELOG.md
new file mode 100644
index 0000000..dbbc9d0
--- /dev/null
+++ b/stable/firefox/12.2.0/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-12.2.0](https://github.com/truecharts/charts/compare/firefox-12.1.2...firefox-12.2.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.1.5[@dc867e0](https://github.com/dc867e0) by renovate ([#19210](https://github.com/truecharts/charts/issues/19210))
+
+
+## [firefox-12.1.2](https://github.com/truecharts/charts/compare/firefox-12.1.1...firefox-12.1.2) (2024-03-12)
+
+### Chore
+
+
+
+- update container image common to v20.0.9[@caa8bac](https://github.com/caa8bac) by renovate ([#19179](https://github.com/truecharts/charts/issues/19179))
+
+
+## [firefox-12.1.1](https://github.com/truecharts/charts/compare/firefox-12.1.0...firefox-12.1.1) (2024-03-12)
+
+### Chore
+
+
+
+- update container image common to v20.0.8[@021a874](https://github.com/021a874) by renovate ([#19175](https://github.com/truecharts/charts/issues/19175))
+
+
+## [firefox-12.1.0](https://github.com/truecharts/charts/compare/firefox-12.0.0...firefox-12.1.0) (2024-03-11)
+
+### Chore
+
+
+
+- update container image common to v20.0.6[@5f6c753](https://github.com/5f6c753) by renovate ([#19131](https://github.com/truecharts/charts/issues/19131))
+
+
+## [firefox-12.0.0](https://github.com/truecharts/charts/compare/firefox-11.4.1...firefox-12.0.0) (2024-03-11)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to v123.0.1[@b616ef4](https://github.com/b616ef4) by renovate ([#19132](https://github.com/truecharts/charts/issues/19132))
+
+
+## [firefox-11.4.1](https://github.com/truecharts/charts/compare/firefox-11.4.0...firefox-11.4.1) (2024-03-07)
+
+### Chore
+
+
+
+- bump everything to trigger re-release
+
+
+## [firefox-11.4.0](https://github.com/truecharts/charts/compare/firefox-11.3.0...firefox-11.4.0) (2024-03-07)
+
+### Chore
+
+
+
+- update container image common to v19.0.0[@eef2062](https://github.com/eef2062) by renovate ([#18956](https://github.com/truecharts/charts/issues/18956))
+
+
+## [firefox-11.3.0](https://github.com/truecharts/charts/compare/firefox-11.2.3...firefox-11.3.0) (2024-03-06)
+
+### Chore
+
+
+
+- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943))
+
+
+## [firefox-11.2.3](https://github.com/truecharts/charts/compare/firefox-11.2.2...firefox-11.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [firefox-11.2.2](https://github.com/truecharts/charts/compare/firefox-11.2.0...firefox-11.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
\ No newline at end of file
diff --git a/stable/firefox/12.2.0/Chart.yaml b/stable/firefox/12.2.0/Chart.yaml
new file mode 100644
index 0000000..50f9bac
--- /dev/null
+++ b/stable/firefox/12.2.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 123.0.1
+dependencies:
+ - name: common
+ version: 20.1.5
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 12.2.0
diff --git a/stable/firefox/12.2.0/README.md b/stable/firefox/12.2.0/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/12.2.0/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/firefox)
+
+**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/firefox/12.2.0/app-readme.md b/stable/firefox/12.2.0/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/12.2.0/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/12.2.0/charts/common-20.1.5.tgz b/stable/firefox/12.2.0/charts/common-20.1.5.tgz
new file mode 100644
index 0000000..4c98dba
Binary files /dev/null and b/stable/firefox/12.2.0/charts/common-20.1.5.tgz differ
diff --git a/stable/firefox/12.2.0/ix_values.yaml b/stable/firefox/12.2.0/ix_values.yaml
new file mode 100644
index 0000000..1b09ac7
--- /dev/null
+++ b/stable/firefox/12.2.0/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 123.0.1@sha256:b616ef4f65f3a3f461ee1b56b16090050de44b3b38015478d89a52dcbe87afb1
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/12.2.0/questions.yaml b/stable/firefox/12.2.0/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/12.2.0/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/12.2.0/templates/NOTES.txt b/stable/firefox/12.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/12.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/12.2.0/templates/common.yaml b/stable/firefox/12.2.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/12.2.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/12.2.0/values.yaml b/stable/firefox/12.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/12.3.0/.helmignore b/stable/firefox/12.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/12.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/12.3.0/CHANGELOG.md b/stable/firefox/12.3.0/CHANGELOG.md
new file mode 100644
index 0000000..4363ae0
--- /dev/null
+++ b/stable/firefox/12.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.2.0](https://github.com/truecharts/charts/compare/firefox-12.1.2...firefox-12.2.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.1.5[@dc867e0](https://github.com/dc867e0) by renovate ([#19210](https://github.com/truecharts/charts/issues/19210))
+
+
+## [firefox-12.1.2](https://github.com/truecharts/charts/compare/firefox-12.1.1...firefox-12.1.2) (2024-03-12)
+
+### Chore
+
+
+
+- update container image common to v20.0.9[@caa8bac](https://github.com/caa8bac) by renovate ([#19179](https://github.com/truecharts/charts/issues/19179))
+
+
+## [firefox-12.1.1](https://github.com/truecharts/charts/compare/firefox-12.1.0...firefox-12.1.1) (2024-03-12)
+
+### Chore
+
+
+
+- update container image common to v20.0.8[@021a874](https://github.com/021a874) by renovate ([#19175](https://github.com/truecharts/charts/issues/19175))
+
diff --git a/stable/firefox/12.3.0/Chart.yaml b/stable/firefox/12.3.0/Chart.yaml
new file mode 100644
index 0000000..d989d1e
--- /dev/null
+++ b/stable/firefox/12.3.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 123.0.1
+dependencies:
+ - name: common
+ version: 20.2.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 12.3.0
diff --git a/stable/firefox/12.3.0/README.md b/stable/firefox/12.3.0/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/12.3.0/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/firefox)
+
+**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/firefox/12.3.0/app-changelog.md b/stable/firefox/12.3.0/app-changelog.md
new file mode 100644
index 0000000..45c42cd
--- /dev/null
+++ b/stable/firefox/12.3.0/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [firefox-12.3.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/firefox/12.3.0/app-readme.md b/stable/firefox/12.3.0/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/12.3.0/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/12.3.0/charts/common-20.2.0.tgz b/stable/firefox/12.3.0/charts/common-20.2.0.tgz
new file mode 100644
index 0000000..8bc207a
Binary files /dev/null and b/stable/firefox/12.3.0/charts/common-20.2.0.tgz differ
diff --git a/stable/firefox/12.3.0/ix_values.yaml b/stable/firefox/12.3.0/ix_values.yaml
new file mode 100644
index 0000000..1b09ac7
--- /dev/null
+++ b/stable/firefox/12.3.0/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 123.0.1@sha256:b616ef4f65f3a3f461ee1b56b16090050de44b3b38015478d89a52dcbe87afb1
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/12.3.0/questions.yaml b/stable/firefox/12.3.0/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/12.3.0/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/12.3.0/templates/NOTES.txt b/stable/firefox/12.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/12.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/12.3.0/templates/common.yaml b/stable/firefox/12.3.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/12.3.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/12.3.0/values.yaml b/stable/firefox/12.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/12.3.1/.helmignore b/stable/firefox/12.3.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/12.3.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/12.3.1/CHANGELOG.md b/stable/firefox/12.3.1/CHANGELOG.md
new file mode 100644
index 0000000..6cea6c1
--- /dev/null
+++ b/stable/firefox/12.3.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
diff --git a/stable/firefox/12.3.1/Chart.yaml b/stable/firefox/12.3.1/Chart.yaml
new file mode 100644
index 0000000..0371a82
--- /dev/null
+++ b/stable/firefox/12.3.1/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 123.0.1
+dependencies:
+ - name: common
+ version: 20.2.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: '>=1.24.0-0'
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 12.3.1
diff --git a/stable/firefox/12.3.1/README.md b/stable/firefox/12.3.1/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/12.3.1/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/firefox)
+
+**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/firefox/12.3.1/app-changelog.md b/stable/firefox/12.3.1/app-changelog.md
new file mode 100644
index 0000000..f391a33
--- /dev/null
+++ b/stable/firefox/12.3.1/app-changelog.md
@@ -0,0 +1,11 @@
+
+
+## [firefox-12.3.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/firefox/12.3.1/app-readme.md b/stable/firefox/12.3.1/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/12.3.1/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/12.3.1/charts/common-20.2.0.tgz b/stable/firefox/12.3.1/charts/common-20.2.0.tgz
new file mode 100644
index 0000000..8bc207a
Binary files /dev/null and b/stable/firefox/12.3.1/charts/common-20.2.0.tgz differ
diff --git a/stable/firefox/12.3.1/ix_values.yaml b/stable/firefox/12.3.1/ix_values.yaml
new file mode 100644
index 0000000..d6222d1
--- /dev/null
+++ b/stable/firefox/12.3.1/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 123.0.1@sha256:55adf05382872deee11865f2c7c6ae49f163c737f8fdb8c7c17d564d13c5449b
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/12.3.1/questions.yaml b/stable/firefox/12.3.1/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/12.3.1/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/12.3.1/templates/NOTES.txt b/stable/firefox/12.3.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/12.3.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/12.3.1/templates/common.yaml b/stable/firefox/12.3.1/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/12.3.1/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/12.3.1/values.yaml b/stable/firefox/12.3.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/12.3.2/.helmignore b/stable/firefox/12.3.2/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/12.3.2/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/12.3.2/CHANGELOG.md b/stable/firefox/12.3.2/CHANGELOG.md
new file mode 100644
index 0000000..9dfca09
--- /dev/null
+++ b/stable/firefox/12.3.2/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
diff --git a/stable/firefox/12.3.2/Chart.yaml b/stable/firefox/12.3.2/Chart.yaml
new file mode 100644
index 0000000..2d231d6
--- /dev/null
+++ b/stable/firefox/12.3.2/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 123.0.1
+dependencies:
+ - name: common
+ version: 20.2.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 12.3.2
diff --git a/stable/firefox/12.3.2/README.md b/stable/firefox/12.3.2/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/12.3.2/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/firefox)
+
+**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/firefox/12.3.2/app-changelog.md b/stable/firefox/12.3.2/app-changelog.md
new file mode 100644
index 0000000..c8948e4
--- /dev/null
+++ b/stable/firefox/12.3.2/app-changelog.md
@@ -0,0 +1,13 @@
+
+
+## [firefox-12.3.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-12.3.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/firefox/12.3.2/app-readme.md b/stable/firefox/12.3.2/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/12.3.2/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/12.3.2/charts/common-20.2.2.tgz b/stable/firefox/12.3.2/charts/common-20.2.2.tgz
new file mode 100644
index 0000000..a03705c
Binary files /dev/null and b/stable/firefox/12.3.2/charts/common-20.2.2.tgz differ
diff --git a/stable/firefox/12.3.2/ix_values.yaml b/stable/firefox/12.3.2/ix_values.yaml
new file mode 100644
index 0000000..d6222d1
--- /dev/null
+++ b/stable/firefox/12.3.2/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 123.0.1@sha256:55adf05382872deee11865f2c7c6ae49f163c737f8fdb8c7c17d564d13c5449b
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/12.3.2/questions.yaml b/stable/firefox/12.3.2/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/12.3.2/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/12.3.2/templates/NOTES.txt b/stable/firefox/12.3.2/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/12.3.2/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/12.3.2/templates/common.yaml b/stable/firefox/12.3.2/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/12.3.2/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/12.3.2/values.yaml b/stable/firefox/12.3.2/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/13.0.0/.helmignore b/stable/firefox/13.0.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/13.0.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/13.0.0/CHANGELOG.md b/stable/firefox/13.0.0/CHANGELOG.md
new file mode 100644
index 0000000..4c8959f
--- /dev/null
+++ b/stable/firefox/13.0.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-13.0.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.0) (2024-03-24)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.0) (2024-03-24)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.0) (2024-03-23)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.0) (2024-03-23)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.0) (2024-03-23)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.0) (2024-03-23)
+
+### Chore
+
diff --git a/stable/firefox/13.0.0/Chart.yaml b/stable/firefox/13.0.0/Chart.yaml
new file mode 100644
index 0000000..fa06ade
--- /dev/null
+++ b/stable/firefox/13.0.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 124.0.1
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 13.0.0
diff --git a/stable/firefox/13.0.0/README.md b/stable/firefox/13.0.0/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/13.0.0/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/firefox)
+
+**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/firefox/13.0.0/app-changelog.md b/stable/firefox/13.0.0/app-changelog.md
new file mode 100644
index 0000000..08c4854
--- /dev/null
+++ b/stable/firefox/13.0.0/app-changelog.md
@@ -0,0 +1,17 @@
+
+
+## [firefox-13.0.0](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.0) (2024-03-24)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/firefox/13.0.0/app-readme.md b/stable/firefox/13.0.0/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/13.0.0/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/13.0.0/charts/common-20.2.3.tgz b/stable/firefox/13.0.0/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/firefox/13.0.0/charts/common-20.2.3.tgz differ
diff --git a/stable/firefox/13.0.0/ix_values.yaml b/stable/firefox/13.0.0/ix_values.yaml
new file mode 100644
index 0000000..5882beb
--- /dev/null
+++ b/stable/firefox/13.0.0/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 124.0.1@sha256:46761f7c433b3a6b6dfce25c38d45d19b14ae0a1f0afd79f6d0cab1838dc89da
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/13.0.0/questions.yaml b/stable/firefox/13.0.0/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/13.0.0/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/13.0.0/templates/NOTES.txt b/stable/firefox/13.0.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/13.0.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/13.0.0/templates/common.yaml b/stable/firefox/13.0.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/13.0.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/13.0.0/values.yaml b/stable/firefox/13.0.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/13.0.1/.helmignore b/stable/firefox/13.0.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/13.0.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/13.0.1/CHANGELOG.md b/stable/firefox/13.0.1/CHANGELOG.md
new file mode 100644
index 0000000..3ff7dc7
--- /dev/null
+++ b/stable/firefox/13.0.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-24)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-24)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image common to v20.2.2[@f7d0b92](https://github.com/f7d0b92) by renovate ([#19432](https://github.com/truecharts/charts/issues/19432))
diff --git a/stable/firefox/13.0.1/Chart.yaml b/stable/firefox/13.0.1/Chart.yaml
new file mode 100644
index 0000000..550c8f7
--- /dev/null
+++ b/stable/firefox/13.0.1/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 124.0.1
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 13.0.1
diff --git a/stable/firefox/13.0.1/README.md b/stable/firefox/13.0.1/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/13.0.1/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/firefox)
+
+**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/firefox/13.0.1/app-changelog.md b/stable/firefox/13.0.1/app-changelog.md
new file mode 100644
index 0000000..a0e13c8
--- /dev/null
+++ b/stable/firefox/13.0.1/app-changelog.md
@@ -0,0 +1,19 @@
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/firefox/13.0.1/app-readme.md b/stable/firefox/13.0.1/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/13.0.1/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/13.0.1/charts/common-20.2.3.tgz b/stable/firefox/13.0.1/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/firefox/13.0.1/charts/common-20.2.3.tgz differ
diff --git a/stable/firefox/13.0.1/ix_values.yaml b/stable/firefox/13.0.1/ix_values.yaml
new file mode 100644
index 0000000..c2ff5aa
--- /dev/null
+++ b/stable/firefox/13.0.1/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 124.0.1@sha256:e906a0ea71f2dd3a8949d3713a9d8b17fc537edce6d66dd28c7f1e30dac8bff5
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/13.0.1/questions.yaml b/stable/firefox/13.0.1/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/13.0.1/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/13.0.1/templates/NOTES.txt b/stable/firefox/13.0.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/13.0.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/13.0.1/templates/common.yaml b/stable/firefox/13.0.1/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/13.0.1/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/13.0.1/values.yaml b/stable/firefox/13.0.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/13.0.2/.helmignore b/stable/firefox/13.0.2/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/firefox/13.0.2/.helmignore
@@ -0,0 +1,30 @@
+# 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/firefox/13.0.2/CHANGELOG.md b/stable/firefox/13.0.2/CHANGELOG.md
new file mode 100644
index 0000000..5f685db
--- /dev/null
+++ b/stable/firefox/13.0.2/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [firefox-13.0.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.2) (2024-03-25)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.2) (2024-03-25)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [firefox-13.0.1](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.1) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
diff --git a/stable/firefox/13.0.2/Chart.yaml b/stable/firefox/13.0.2/Chart.yaml
new file mode 100644
index 0000000..d274ddb
--- /dev/null
+++ b/stable/firefox/13.0.2/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: browser
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 124.0.1
+dependencies:
+ - name: common
+ version: 20.2.4
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+home: https://truecharts.org/charts/stable/firefox
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+keywords:
+ - firefox
+ - browser
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: firefox
+sources:
+ - https://github.com/linuxserver/docker-firefox
+ - https://github.com/truecharts/charts/tree/master/charts/stable/firefox
+ - https://ghcr.io/linuxserver/firefox
+type: application
+version: 13.0.2
diff --git a/stable/firefox/13.0.2/README.md b/stable/firefox/13.0.2/README.md
new file mode 100644
index 0000000..af8822b
--- /dev/null
+++ b/stable/firefox/13.0.2/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/firefox)
+
+**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/firefox/13.0.2/app-changelog.md b/stable/firefox/13.0.2/app-changelog.md
new file mode 100644
index 0000000..f0141ba
--- /dev/null
+++ b/stable/firefox/13.0.2/app-changelog.md
@@ -0,0 +1,21 @@
+
+
+## [firefox-13.0.2](https://github.com/truecharts/charts/compare/firefox-12.2.0...firefox-13.0.2) (2024-03-25)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/firefox to 124.0.1[@e906a0e](https://github.com/e906a0e) by renovate ([#19703](https://github.com/truecharts/charts/issues/19703))
+
+- update container image ghcr.io/linuxserver/firefox to v124.0.1[@46761f7](https://github.com/46761f7) by renovate ([#19676](https://github.com/truecharts/charts/issues/19676))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/firefox to 123.0.1[@55adf05](https://github.com/55adf05) by renovate ([#19382](https://github.com/truecharts/charts/issues/19382))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/firefox/13.0.2/app-readme.md b/stable/firefox/13.0.2/app-readme.md
new file mode 100644
index 0000000..06d4ce1
--- /dev/null
+++ b/stable/firefox/13.0.2/app-readme.md
@@ -0,0 +1,8 @@
+a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/firefox](https://truecharts.org/charts/stable/firefox)
+
+---
+
+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/firefox/13.0.2/charts/common-20.2.4.tgz b/stable/firefox/13.0.2/charts/common-20.2.4.tgz
new file mode 100644
index 0000000..e02a4ec
Binary files /dev/null and b/stable/firefox/13.0.2/charts/common-20.2.4.tgz differ
diff --git a/stable/firefox/13.0.2/ix_values.yaml b/stable/firefox/13.0.2/ix_values.yaml
new file mode 100644
index 0000000..c2ff5aa
--- /dev/null
+++ b/stable/firefox/13.0.2/ix_values.yaml
@@ -0,0 +1,41 @@
+image:
+ repository: ghcr.io/linuxserver/firefox
+ pullPolicy: IfNotPresent
+ tag: 124.0.1@sha256:e906a0ea71f2dd3a8949d3713a9d8b17fc537edce6d66dd28c7f1e30dac8bff5
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ protocol: http
+ port: 10131
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ type: http
+ readiness:
+ type: http
+ startup:
+ type: http
+ env:
+ FM_HOME: "/config"
+ CUSTOM_PORT: "{{ .Values.service.main.ports.main.port }}"
+ TITLE: "TrueChartVNC Client"
+persistence:
+ config:
+ enabled: true
+ mountPath: /config
+ varrun:
+ enabled: false
+portal:
+ open:
+ enabled: true
diff --git a/stable/firefox/13.0.2/questions.yaml b/stable/firefox/13.0.2/questions.yaml
new file mode 100644
index 0000000..9e48fe5
--- /dev/null
+++ b/stable/firefox/13.0.2/questions.yaml
@@ -0,0 +1,2851 @@
+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: env
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: TITLE
+ label: Title
+ description: The page title displayed on the web browser
+ schema:
+ type: string
+ default: "TrueChartVNC Client"
+ - 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 Minecraft Server runs on
+ 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: 10131
+ 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 Config.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: 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: 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: '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: 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: 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/firefox/13.0.2/templates/NOTES.txt b/stable/firefox/13.0.2/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/firefox/13.0.2/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/firefox/13.0.2/templates/common.yaml b/stable/firefox/13.0.2/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/firefox/13.0.2/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/firefox/13.0.2/values.yaml b/stable/firefox/13.0.2/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/firefox/app_versions.json b/stable/firefox/app_versions.json
new file mode 100644
index 0000000..373382e
--- /dev/null
+++ b/stable/firefox/app_versions.json
@@ -0,0 +1,64633 @@
+{
+ "13.0.2": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/13.0.2",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "124.0.1_13.0.2",
+ "version": "13.0.2",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "124.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.4",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "13.0.2"
+ },
+ "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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n"
+ },
+ "13.0.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/13.0.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "124.0.1_13.0.1",
+ "version": "13.0.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "124.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "13.0.1"
+ },
+ "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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to 124.0.1@e906a0e by renovate (#19703)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n
"
+ },
+ "13.0.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/13.0.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "124.0.1_13.0.0",
+ "version": "13.0.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "124.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "13.0.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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/firefox to v124.0.1@46761f7 by renovate (#19676)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
"
+ },
+ "12.3.2": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/12.3.2",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "123.0.1_12.3.2",
+ "version": "12.3.2",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "123.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "12.3.2"
+ },
+ "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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/firefox to 123.0.1@55adf05 by renovate (#19382)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
"
+ },
+ "12.3.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/12.3.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "123.0.1_12.3.1",
+ "version": "12.3.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "123.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "12.3.1"
+ },
+ "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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n"
+ },
+ "12.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/12.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "123.0.1_12.3.0",
+ "version": "12.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "123.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "12.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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.1.5@dc867e0 by renovate (#19210)
\n
\n\nChore
\n\n- update container image common to v20.0.9@caa8bac by renovate (#19179)
\n
\n\nChore
\n\n- update container image common to v20.0.8@021a874 by renovate (#19175)
\n
"
+ },
+ "12.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/12.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "123.0.1_12.2.0",
+ "version": "12.2.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "123.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.1.5",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "12.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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v20.1.5@dc867e0 by renovate (#19210)
\n
\n\nChore
\n\n- update container image common to v20.0.9@caa8bac by renovate (#19179)
\n
\n\nChore
\n\n- update container image common to v20.0.8@021a874 by renovate (#19175)
\n
\n\nChore
\n\n- update container image common to v20.0.6@5f6c753 by renovate (#19131)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to v123.0.1@b616ef4 by renovate (#19132)
\n
\n\nChore
\n\n- bump everything to trigger re-release
\n
\n\nChore
\n\n- update container image common to v19.0.0@eef2062 by renovate (#18956)
\n
\n\nChore
\n\n- update container image common to v18.2.0@9e8b7d4 by renovate (#18943)
\n
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n"
+ },
+ "11.4.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/11.4.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "120.0.1_11.4.1",
+ "version": "11.4.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "120.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "19.0.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "11.4.1"
+ },
+ "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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- bump everything to trigger re-release
\n
\n\nChore
\n\n- update container image common to v19.0.0@eef2062 by renovate (#18956)
\n
\n\nChore
\n\n- update container image common to v18.2.0@9e8b7d4 by renovate (#18943)
\n
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
"
+ },
+ "11.4.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/11.4.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "120.0.1_11.4.0",
+ "version": "11.4.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "120.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "19.0.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "11.4.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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v19.0.0@eef2062 by renovate (#18956)
\n
\n\nChore
\n\n- update container image common to v18.2.0@9e8b7d4 by renovate (#18943)
\n
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
"
+ },
+ "11.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/11.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "120.0.1_11.3.0",
+ "version": "11.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "120.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.2.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "11.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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v18.2.0@9e8b7d4 by renovate (#18943)
\n
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@ac3c881 by renovate (#17351)
\n
"
+ },
+ "11.2.3": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/11.2.3",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "120.0.1_11.2.3",
+ "version": "11.2.3",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "120.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.1.6",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "11.2.3"
+ },
+ "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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@ac3c881 by renovate (#17351)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@34df0f7 by renovate (#17232)
\n
"
+ },
+ "10.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/10.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "120.0.1_10.2.0",
+ "version": "10.2.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "120.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.5.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "10.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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@ac3c881 by renovate (#17351)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@34df0f7 by renovate (#17232)
\n
\n\nChore
\n\n- update container image common to v17.2.22@e7c9056 by renovate (#16986)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@2bf06b5 by renovate (#16940)
\n
\n\nChore
"
+ },
+ "10.1.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/firefox/10.1.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "120.0.1_10.1.0",
+ "version": "10.1.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "browser",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "120.0.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.",
+ "home": "https://truecharts.org/charts/stable/firefox",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png",
+ "keywords": [
+ "firefox",
+ "browser"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "firefox",
+ "sources": [
+ "https://github.com/linuxserver/docker-firefox",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/firefox",
+ "https://ghcr.io/linuxserver/firefox"
+ ],
+ "type": "application",
+ "version": "10.1.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": "env",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "TITLE",
+ "label": "Title",
+ "description": "The page title displayed on the web browser",
+ "schema": {
+ "type": "string",
+ "default": "TrueChartVNC Client"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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 Minecraft Server runs on",
+ "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": 10131,
+ "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 Config.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "type",
+ "label": "Type of Storage",
+ "description": "Sets the persistence type, Anything other than PVC could break rollback!",
+ "schema": {
+ "type": "string",
+ "default": "pvc",
+ "enum": [
+ {
+ "value": "pvc",
+ "description": "PVC"
+ },
+ {
+ "value": "hostPath",
+ "description": "Host Path"
+ },
+ {
+ "value": "emptyDir",
+ "description": "emptyDir"
+ },
+ {
+ "value": "nfs",
+ "description": "NFS Share"
+ },
+ {
+ "value": "iscsi",
+ "description": "iSCSI Share"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "server",
+ "label": "NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "Path on NFS Server",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "nfs"
+ ]
+ ],
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "iscsi",
+ "label": "iSCSI Options",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "=",
+ "iscsi"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "targetPortal",
+ "label": "targetPortal",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "iqn",
+ "label": "iqn",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": ""
+ }
+ },
+ {
+ "variable": "lun",
+ "label": "lun",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "variable": "authSession",
+ "label": "authSession",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "authDiscovery",
+ "label": "authDiscovery",
+ "schema": {
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "usernameInitiator",
+ "label": "usernameInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "passwordInitiator",
+ "label": "passwordInitiator",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "autoPermissions",
+ "label": "Automatic Permissions Configuration",
+ "description": "Automatically set permissions",
+ "schema": {
+ "show_if": [
+ [
+ "type",
+ "!=",
+ "pvc"
+ ]
+ ],
+ "type": "dict",
+ "additional_attrs": true,
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "chown",
+ "label": "Run CHOWN",
+ "description": "It will run CHOWN on the path with the given fsGroup\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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation.
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/firefox
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@ac3c881 by renovate (#17351)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@34df0f7 by renovate (#17232)
\n
\n\nChore
\n\n- update container image common to v17.2.22@e7c9056 by renovate (#16986)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/firefox to 120.0.1@2bf06b5 by renovate (#16940)
\n
\n\nChore
"
+ }
+}
\ No newline at end of file
diff --git a/stable/firefox/item.yaml b/stable/firefox/item.yaml
new file mode 100644
index 0000000..c17da30
--- /dev/null
+++ b/stable/firefox/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/firefox.png
+categories:
+ - browser
+screenshots: []
diff --git a/stable/frigate/12.2.0/.helmignore b/stable/frigate/12.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/12.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/12.2.0/CHANGELOG.md b/stable/frigate/12.2.0/CHANGELOG.md
new file mode 100644
index 0000000..cfe4e0a
--- /dev/null
+++ b/stable/frigate/12.2.0/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+## [frigate-12.1.11](https://github.com/truecharts/charts/compare/frigate-12.1.10...frigate-12.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))
+
+
+## [frigate-12.1.10](https://github.com/truecharts/charts/compare/frigate-12.1.9...frigate-12.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))
+
+
+## [frigate-12.1.9](https://github.com/truecharts/charts/compare/frigate-12.1.8...frigate-12.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))
+
+
+## [frigate-12.1.8](https://github.com/truecharts/charts/compare/frigate-12.1.7...frigate-12.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))
+
+
+## [frigate-12.1.7](https://github.com/truecharts/charts/compare/frigate-12.1.6...frigate-12.1.7) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+
+
+## [frigate-12.1.6](https://github.com/truecharts/charts/compare/frigate-12.1.5...frigate-12.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))
+
+
+## [frigate-12.1.5](https://github.com/truecharts/charts/compare/frigate-12.1.4...frigate-12.1.5) (2024-01-02)
+
+### Chore
+
+
+
+- force bump to ensure up-to-date catalogs
+
+
+## [frigate-12.1.4](https://github.com/truecharts/charts/compare/frigate-12.1.3...frigate-12.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))
+
+
+## [frigate-12.1.3](https://github.com/truecharts/charts/compare/frigate-12.1.0...frigate-12.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/frigate/12.2.0/Chart.yaml b/stable/frigate/12.2.0/Chart.yaml
new file mode 100644
index 0000000..4164cd7
--- /dev/null
+++ b/stable/frigate/12.2.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.12.1
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 12.2.0
diff --git a/stable/frigate/12.2.0/README.md b/stable/frigate/12.2.0/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/12.2.0/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/frigate)
+
+**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/frigate/12.2.0/app-readme.md b/stable/frigate/12.2.0/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/12.2.0/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/12.2.0/charts/common-17.4.2.tgz b/stable/frigate/12.2.0/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/frigate/12.2.0/charts/common-17.4.2.tgz differ
diff --git a/stable/frigate/12.2.0/ix_values.yaml b/stable/frigate/12.2.0/ix_values.yaml
new file mode 100644
index 0000000..f5513e2
--- /dev/null
+++ b/stable/frigate/12.2.0/ix_values.yaml
@@ -0,0 +1,96 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1@sha256:bb7f7e76a13eccef0b12704e5851cc774a12af1f12df387d6a70a796a3e938c3
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1-tensorrt@sha256:db6e62d94206803011307296242ee6bfcc185bcf4eb6f68a6fdab8fa7f03a3fb
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml.dummy /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ fi
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ # Only enable when not using frigateConfig
+ enabled: false
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/frigate/12.2.0/questions.yaml b/stable/frigate/12.2.0/questions.yaml
new file mode 100644
index 0000000..188238a
--- /dev/null
+++ b/stable/frigate/12.2.0/questions.yaml
@@ -0,0 +1,3321 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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/frigate/12.2.0/templates/NOTES.txt b/stable/frigate/12.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/12.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/12.2.0/templates/_configmap.tpl b/stable/frigate/12.2.0/templates/_configmap.tpl
new file mode 100644
index 0000000..ebf2580
--- /dev/null
+++ b/stable/frigate/12.2.0/templates/_configmap.tpl
@@ -0,0 +1,42 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ {{- if .Values.frigateConfig }}
+ config.yml: |
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ config.yml.dummy: |
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+enabled: true
+type: configmap
+objectName: frigate-config
+targetSelector:
+ main:
+ main: {}
+ init-config: {}
+{{- if .Values.frigateConfig }}
+mountPath: /config
+items:
+ - key: config.yml
+ path: config.yml
+{{- else }}
+mountPath: /dummy-config
+items:
+ - key: config.yml.dummy
+ path: config.yml.dummy
+{{- end -}}
+{{- end -}}
diff --git a/stable/frigate/12.2.0/templates/common.yaml b/stable/frigate/12.2.0/templates/common.yaml
new file mode 100644
index 0000000..6ec5e06
--- /dev/null
+++ b/stable/frigate/12.2.0/templates/common.yaml
@@ -0,0 +1,20 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+{{- if not .Values.frigateConfig -}}
+ {{- $_ := set .Values.persistence.config "enabled" true -}}
+{{- end -}}
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/12.2.0/values.yaml b/stable/frigate/12.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/12.3.0/.helmignore b/stable/frigate/12.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/12.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/12.3.0/CHANGELOG.md b/stable/frigate/12.3.0/CHANGELOG.md
new file mode 100644
index 0000000..01cbec1
--- /dev/null
+++ b/stable/frigate/12.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+## [frigate-12.1.11](https://github.com/truecharts/charts/compare/frigate-12.1.10...frigate-12.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))
+
+
+## [frigate-12.1.10](https://github.com/truecharts/charts/compare/frigate-12.1.9...frigate-12.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))
+
+
+## [frigate-12.1.9](https://github.com/truecharts/charts/compare/frigate-12.1.8...frigate-12.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))
+
+
+## [frigate-12.1.8](https://github.com/truecharts/charts/compare/frigate-12.1.7...frigate-12.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))
+
+
+## [frigate-12.1.7](https://github.com/truecharts/charts/compare/frigate-12.1.6...frigate-12.1.7) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+
+
+## [frigate-12.1.6](https://github.com/truecharts/charts/compare/frigate-12.1.5...frigate-12.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))
+
+
+## [frigate-12.1.5](https://github.com/truecharts/charts/compare/frigate-12.1.4...frigate-12.1.5) (2024-01-02)
+
+### Chore
+
+
+
+- force bump to ensure up-to-date catalogs
+
+
+## [frigate-12.1.4](https://github.com/truecharts/charts/compare/frigate-12.1.3...frigate-12.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))
+
+
+## [frigate-12.1.3](https://github.com/truecharts/charts/compare/frigate-12.1.0...frigate-12.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/frigate/12.3.0/Chart.yaml b/stable/frigate/12.3.0/Chart.yaml
new file mode 100644
index 0000000..702589f
--- /dev/null
+++ b/stable/frigate/12.3.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.12.1
+dependencies:
+ - name: common
+ version: 17.5.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 12.3.0
diff --git a/stable/frigate/12.3.0/README.md b/stable/frigate/12.3.0/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/12.3.0/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/frigate)
+
+**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/frigate/12.3.0/app-readme.md b/stable/frigate/12.3.0/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/12.3.0/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/12.3.0/charts/common-17.5.0.tgz b/stable/frigate/12.3.0/charts/common-17.5.0.tgz
new file mode 100644
index 0000000..3a55348
Binary files /dev/null and b/stable/frigate/12.3.0/charts/common-17.5.0.tgz differ
diff --git a/stable/frigate/12.3.0/ix_values.yaml b/stable/frigate/12.3.0/ix_values.yaml
new file mode 100644
index 0000000..f5513e2
--- /dev/null
+++ b/stable/frigate/12.3.0/ix_values.yaml
@@ -0,0 +1,96 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1@sha256:bb7f7e76a13eccef0b12704e5851cc774a12af1f12df387d6a70a796a3e938c3
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1-tensorrt@sha256:db6e62d94206803011307296242ee6bfcc185bcf4eb6f68a6fdab8fa7f03a3fb
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml.dummy /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ fi
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ # Only enable when not using frigateConfig
+ enabled: false
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/frigate/12.3.0/questions.yaml b/stable/frigate/12.3.0/questions.yaml
new file mode 100644
index 0000000..188238a
--- /dev/null
+++ b/stable/frigate/12.3.0/questions.yaml
@@ -0,0 +1,3321 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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/frigate/12.3.0/templates/NOTES.txt b/stable/frigate/12.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/12.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/12.3.0/templates/_configmap.tpl b/stable/frigate/12.3.0/templates/_configmap.tpl
new file mode 100644
index 0000000..ebf2580
--- /dev/null
+++ b/stable/frigate/12.3.0/templates/_configmap.tpl
@@ -0,0 +1,42 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ {{- if .Values.frigateConfig }}
+ config.yml: |
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ config.yml.dummy: |
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+enabled: true
+type: configmap
+objectName: frigate-config
+targetSelector:
+ main:
+ main: {}
+ init-config: {}
+{{- if .Values.frigateConfig }}
+mountPath: /config
+items:
+ - key: config.yml
+ path: config.yml
+{{- else }}
+mountPath: /dummy-config
+items:
+ - key: config.yml.dummy
+ path: config.yml.dummy
+{{- end -}}
+{{- end -}}
diff --git a/stable/frigate/12.3.0/templates/common.yaml b/stable/frigate/12.3.0/templates/common.yaml
new file mode 100644
index 0000000..6ec5e06
--- /dev/null
+++ b/stable/frigate/12.3.0/templates/common.yaml
@@ -0,0 +1,20 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+{{- if not .Values.frigateConfig -}}
+ {{- $_ := set .Values.persistence.config "enabled" true -}}
+{{- end -}}
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/12.3.0/values.yaml b/stable/frigate/12.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/13.2.3/.helmignore b/stable/frigate/13.2.3/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/13.2.3/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/13.2.3/CHANGELOG.md b/stable/frigate/13.2.3/CHANGELOG.md
new file mode 100644
index 0000000..83649f3
--- /dev/null
+++ b/stable/frigate/13.2.3/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-13.2.3](https://github.com/truecharts/charts/compare/frigate-13.2.2...frigate-13.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [frigate-13.2.2](https://github.com/truecharts/charts/compare/frigate-13.2.0...frigate-13.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [frigate-12.1.11](https://github.com/truecharts/charts/compare/frigate-12.1.10...frigate-12.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))
+
+
+## [frigate-12.1.10](https://github.com/truecharts/charts/compare/frigate-12.1.9...frigate-12.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))
+
+
+## [frigate-12.1.9](https://github.com/truecharts/charts/compare/frigate-12.1.8...frigate-12.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))
+
+
+## [frigate-12.1.8](https://github.com/truecharts/charts/compare/frigate-12.1.7...frigate-12.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))
+
+
+## [frigate-12.1.7](https://github.com/truecharts/charts/compare/frigate-12.1.6...frigate-12.1.7) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+
+
+## [frigate-12.1.6](https://github.com/truecharts/charts/compare/frigate-12.1.5...frigate-12.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))
+
+
+## [frigate-12.1.5](https://github.com/truecharts/charts/compare/frigate-12.1.4...frigate-12.1.5) (2024-01-02)
+
+### Chore
+
+
diff --git a/stable/frigate/13.2.3/Chart.yaml b/stable/frigate/13.2.3/Chart.yaml
new file mode 100644
index 0000000..638b2e4
--- /dev/null
+++ b/stable/frigate/13.2.3/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.12.1
+dependencies:
+ - name: common
+ version: 18.1.6
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 13.2.3
diff --git a/stable/frigate/13.2.3/README.md b/stable/frigate/13.2.3/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/13.2.3/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/frigate)
+
+**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/frigate/13.2.3/app-readme.md b/stable/frigate/13.2.3/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/13.2.3/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/13.2.3/charts/common-18.1.6.tgz b/stable/frigate/13.2.3/charts/common-18.1.6.tgz
new file mode 100644
index 0000000..3ada4bb
Binary files /dev/null and b/stable/frigate/13.2.3/charts/common-18.1.6.tgz differ
diff --git a/stable/frigate/13.2.3/ix_values.yaml b/stable/frigate/13.2.3/ix_values.yaml
new file mode 100644
index 0000000..f5513e2
--- /dev/null
+++ b/stable/frigate/13.2.3/ix_values.yaml
@@ -0,0 +1,96 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1@sha256:bb7f7e76a13eccef0b12704e5851cc774a12af1f12df387d6a70a796a3e938c3
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1-tensorrt@sha256:db6e62d94206803011307296242ee6bfcc185bcf4eb6f68a6fdab8fa7f03a3fb
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml.dummy /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ fi
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ # Only enable when not using frigateConfig
+ enabled: false
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/frigate/13.2.3/questions.yaml b/stable/frigate/13.2.3/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/13.2.3/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/13.2.3/templates/NOTES.txt b/stable/frigate/13.2.3/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/13.2.3/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/13.2.3/templates/_configmap.tpl b/stable/frigate/13.2.3/templates/_configmap.tpl
new file mode 100644
index 0000000..ebf2580
--- /dev/null
+++ b/stable/frigate/13.2.3/templates/_configmap.tpl
@@ -0,0 +1,42 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ {{- if .Values.frigateConfig }}
+ config.yml: |
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ config.yml.dummy: |
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+enabled: true
+type: configmap
+objectName: frigate-config
+targetSelector:
+ main:
+ main: {}
+ init-config: {}
+{{- if .Values.frigateConfig }}
+mountPath: /config
+items:
+ - key: config.yml
+ path: config.yml
+{{- else }}
+mountPath: /dummy-config
+items:
+ - key: config.yml.dummy
+ path: config.yml.dummy
+{{- end -}}
+{{- end -}}
diff --git a/stable/frigate/13.2.3/templates/common.yaml b/stable/frigate/13.2.3/templates/common.yaml
new file mode 100644
index 0000000..6ec5e06
--- /dev/null
+++ b/stable/frigate/13.2.3/templates/common.yaml
@@ -0,0 +1,20 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+{{- if not .Values.frigateConfig -}}
+ {{- $_ := set .Values.persistence.config "enabled" true -}}
+{{- end -}}
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/13.2.3/values.yaml b/stable/frigate/13.2.3/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/13.3.0/.helmignore b/stable/frigate/13.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/13.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/13.3.0/CHANGELOG.md b/stable/frigate/13.3.0/CHANGELOG.md
new file mode 100644
index 0000000..7ea5c85
--- /dev/null
+++ b/stable/frigate/13.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-13.3.0](https://github.com/truecharts/charts/compare/frigate-13.2.3...frigate-13.3.0) (2024-03-06)
+
+### Chore
+
+
+
+- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943))
+
+
+## [frigate-13.2.3](https://github.com/truecharts/charts/compare/frigate-13.2.2...frigate-13.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [frigate-13.2.2](https://github.com/truecharts/charts/compare/frigate-13.2.0...frigate-13.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [frigate-12.1.11](https://github.com/truecharts/charts/compare/frigate-12.1.10...frigate-12.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))
+
+
+## [frigate-12.1.10](https://github.com/truecharts/charts/compare/frigate-12.1.9...frigate-12.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))
+
+
+## [frigate-12.1.9](https://github.com/truecharts/charts/compare/frigate-12.1.8...frigate-12.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))
+
+
+## [frigate-12.1.8](https://github.com/truecharts/charts/compare/frigate-12.1.7...frigate-12.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))
+
+
+## [frigate-12.1.7](https://github.com/truecharts/charts/compare/frigate-12.1.6...frigate-12.1.7) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+
+
+## [frigate-12.1.6](https://github.com/truecharts/charts/compare/frigate-12.1.5...frigate-12.1.6) (2024-01-09)
+
+### Chore
+
+
diff --git a/stable/frigate/13.3.0/Chart.yaml b/stable/frigate/13.3.0/Chart.yaml
new file mode 100644
index 0000000..4ab7f8b
--- /dev/null
+++ b/stable/frigate/13.3.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.12.1
+dependencies:
+ - name: common
+ version: 18.2.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 13.3.0
diff --git a/stable/frigate/13.3.0/README.md b/stable/frigate/13.3.0/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/13.3.0/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/frigate)
+
+**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/frigate/13.3.0/app-readme.md b/stable/frigate/13.3.0/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/13.3.0/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/13.3.0/charts/common-18.2.0.tgz b/stable/frigate/13.3.0/charts/common-18.2.0.tgz
new file mode 100644
index 0000000..a5b3906
Binary files /dev/null and b/stable/frigate/13.3.0/charts/common-18.2.0.tgz differ
diff --git a/stable/frigate/13.3.0/ix_values.yaml b/stable/frigate/13.3.0/ix_values.yaml
new file mode 100644
index 0000000..f5513e2
--- /dev/null
+++ b/stable/frigate/13.3.0/ix_values.yaml
@@ -0,0 +1,96 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1@sha256:bb7f7e76a13eccef0b12704e5851cc774a12af1f12df387d6a70a796a3e938c3
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1-tensorrt@sha256:db6e62d94206803011307296242ee6bfcc185bcf4eb6f68a6fdab8fa7f03a3fb
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml.dummy /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ fi
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ # Only enable when not using frigateConfig
+ enabled: false
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/frigate/13.3.0/questions.yaml b/stable/frigate/13.3.0/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/13.3.0/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/13.3.0/templates/NOTES.txt b/stable/frigate/13.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/13.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/13.3.0/templates/_configmap.tpl b/stable/frigate/13.3.0/templates/_configmap.tpl
new file mode 100644
index 0000000..ebf2580
--- /dev/null
+++ b/stable/frigate/13.3.0/templates/_configmap.tpl
@@ -0,0 +1,42 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ {{- if .Values.frigateConfig }}
+ config.yml: |
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ config.yml.dummy: |
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+enabled: true
+type: configmap
+objectName: frigate-config
+targetSelector:
+ main:
+ main: {}
+ init-config: {}
+{{- if .Values.frigateConfig }}
+mountPath: /config
+items:
+ - key: config.yml
+ path: config.yml
+{{- else }}
+mountPath: /dummy-config
+items:
+ - key: config.yml.dummy
+ path: config.yml.dummy
+{{- end -}}
+{{- end -}}
diff --git a/stable/frigate/13.3.0/templates/common.yaml b/stable/frigate/13.3.0/templates/common.yaml
new file mode 100644
index 0000000..6ec5e06
--- /dev/null
+++ b/stable/frigate/13.3.0/templates/common.yaml
@@ -0,0 +1,20 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+{{- if not .Values.frigateConfig -}}
+ {{- $_ := set .Values.persistence.config "enabled" true -}}
+{{- end -}}
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/13.3.0/values.yaml b/stable/frigate/13.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/13.4.0/.helmignore b/stable/frigate/13.4.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/13.4.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/13.4.0/CHANGELOG.md b/stable/frigate/13.4.0/CHANGELOG.md
new file mode 100644
index 0000000..a40136a
--- /dev/null
+++ b/stable/frigate/13.4.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-13.4.0](https://github.com/truecharts/charts/compare/frigate-13.3.0...frigate-13.4.0) (2024-03-07)
+
+### Chore
+
+
+
+- update container image common to v19.0.0[@eef2062](https://github.com/eef2062) by renovate ([#18956](https://github.com/truecharts/charts/issues/18956))
+
+
+## [frigate-13.3.0](https://github.com/truecharts/charts/compare/frigate-13.2.3...frigate-13.3.0) (2024-03-06)
+
+### Chore
+
+
+
+- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943))
+
+
+## [frigate-13.2.3](https://github.com/truecharts/charts/compare/frigate-13.2.2...frigate-13.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [frigate-13.2.2](https://github.com/truecharts/charts/compare/frigate-13.2.0...frigate-13.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [frigate-12.1.11](https://github.com/truecharts/charts/compare/frigate-12.1.10...frigate-12.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))
+
+
+## [frigate-12.1.10](https://github.com/truecharts/charts/compare/frigate-12.1.9...frigate-12.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))
+
+
+## [frigate-12.1.9](https://github.com/truecharts/charts/compare/frigate-12.1.8...frigate-12.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))
+
+
+## [frigate-12.1.8](https://github.com/truecharts/charts/compare/frigate-12.1.7...frigate-12.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))
+
+
+## [frigate-12.1.7](https://github.com/truecharts/charts/compare/frigate-12.1.6...frigate-12.1.7) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
diff --git a/stable/frigate/13.4.0/Chart.yaml b/stable/frigate/13.4.0/Chart.yaml
new file mode 100644
index 0000000..38712ed
--- /dev/null
+++ b/stable/frigate/13.4.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.12.1
+dependencies:
+ - name: common
+ version: 19.0.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 13.4.0
diff --git a/stable/frigate/13.4.0/README.md b/stable/frigate/13.4.0/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/13.4.0/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/frigate)
+
+**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/frigate/13.4.0/app-changelog.md b/stable/frigate/13.4.0/app-changelog.md
new file mode 100644
index 0000000..d1309ae
--- /dev/null
+++ b/stable/frigate/13.4.0/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [frigate-13.4.0](https://github.com/truecharts/charts/compare/frigate-13.3.0...frigate-13.4.0) (2024-03-07)
+
+### Chore
+
+
+
+- update container image common to v19.0.0[@eef2062](https://github.com/eef2062) by renovate ([#18956](https://github.com/truecharts/charts/issues/18956))
\ No newline at end of file
diff --git a/stable/frigate/13.4.0/app-readme.md b/stable/frigate/13.4.0/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/13.4.0/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/13.4.0/charts/common-19.0.0.tgz b/stable/frigate/13.4.0/charts/common-19.0.0.tgz
new file mode 100644
index 0000000..d8852c1
Binary files /dev/null and b/stable/frigate/13.4.0/charts/common-19.0.0.tgz differ
diff --git a/stable/frigate/13.4.0/ix_values.yaml b/stable/frigate/13.4.0/ix_values.yaml
new file mode 100644
index 0000000..f5513e2
--- /dev/null
+++ b/stable/frigate/13.4.0/ix_values.yaml
@@ -0,0 +1,96 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1@sha256:bb7f7e76a13eccef0b12704e5851cc774a12af1f12df387d6a70a796a3e938c3
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1-tensorrt@sha256:db6e62d94206803011307296242ee6bfcc185bcf4eb6f68a6fdab8fa7f03a3fb
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml.dummy /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ fi
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ # Only enable when not using frigateConfig
+ enabled: false
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/frigate/13.4.0/questions.yaml b/stable/frigate/13.4.0/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/13.4.0/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/13.4.0/templates/NOTES.txt b/stable/frigate/13.4.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/13.4.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/13.4.0/templates/_configmap.tpl b/stable/frigate/13.4.0/templates/_configmap.tpl
new file mode 100644
index 0000000..ebf2580
--- /dev/null
+++ b/stable/frigate/13.4.0/templates/_configmap.tpl
@@ -0,0 +1,42 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ {{- if .Values.frigateConfig }}
+ config.yml: |
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ config.yml.dummy: |
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+enabled: true
+type: configmap
+objectName: frigate-config
+targetSelector:
+ main:
+ main: {}
+ init-config: {}
+{{- if .Values.frigateConfig }}
+mountPath: /config
+items:
+ - key: config.yml
+ path: config.yml
+{{- else }}
+mountPath: /dummy-config
+items:
+ - key: config.yml.dummy
+ path: config.yml.dummy
+{{- end -}}
+{{- end -}}
diff --git a/stable/frigate/13.4.0/templates/common.yaml b/stable/frigate/13.4.0/templates/common.yaml
new file mode 100644
index 0000000..6ec5e06
--- /dev/null
+++ b/stable/frigate/13.4.0/templates/common.yaml
@@ -0,0 +1,20 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+{{- if not .Values.frigateConfig -}}
+ {{- $_ := set .Values.persistence.config "enabled" true -}}
+{{- end -}}
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/13.4.0/values.yaml b/stable/frigate/13.4.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/13.4.1/.helmignore b/stable/frigate/13.4.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/13.4.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/13.4.1/CHANGELOG.md b/stable/frigate/13.4.1/CHANGELOG.md
new file mode 100644
index 0000000..8047cae
--- /dev/null
+++ b/stable/frigate/13.4.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-13.4.1](https://github.com/truecharts/charts/compare/frigate-13.4.0...frigate-13.4.1) (2024-03-07)
+
+### Chore
+
+
+
+- bump everything to trigger re-release
+
+
+## [frigate-13.4.0](https://github.com/truecharts/charts/compare/frigate-13.3.0...frigate-13.4.0) (2024-03-07)
+
+### Chore
+
+
+
+- update container image common to v19.0.0[@eef2062](https://github.com/eef2062) by renovate ([#18956](https://github.com/truecharts/charts/issues/18956))
+
+
+## [frigate-13.3.0](https://github.com/truecharts/charts/compare/frigate-13.2.3...frigate-13.3.0) (2024-03-06)
+
+### Chore
+
+
+
+- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943))
+
+
+## [frigate-13.2.3](https://github.com/truecharts/charts/compare/frigate-13.2.2...frigate-13.2.3) (2024-03-05)
+
+### Chore
+
+
+
+- bump everything to force helm release again
+
+
+## [frigate-13.2.2](https://github.com/truecharts/charts/compare/frigate-13.2.0...frigate-13.2.2) (2024-03-05)
+
+### Chore
+
+
+
+- force rereleases
+
+- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
+
+
+
+
+
+
+
+
+
+
+## [frigate-12.1.11](https://github.com/truecharts/charts/compare/frigate-12.1.10...frigate-12.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))
+
+
+## [frigate-12.1.10](https://github.com/truecharts/charts/compare/frigate-12.1.9...frigate-12.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))
+
+
+## [frigate-12.1.9](https://github.com/truecharts/charts/compare/frigate-12.1.8...frigate-12.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))
+
+
+## [frigate-12.1.8](https://github.com/truecharts/charts/compare/frigate-12.1.7...frigate-12.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))
diff --git a/stable/frigate/13.4.1/Chart.yaml b/stable/frigate/13.4.1/Chart.yaml
new file mode 100644
index 0000000..b914539
--- /dev/null
+++ b/stable/frigate/13.4.1/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.12.1
+dependencies:
+ - name: common
+ version: 19.0.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 13.4.1
diff --git a/stable/frigate/13.4.1/README.md b/stable/frigate/13.4.1/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/13.4.1/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/frigate)
+
+**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/frigate/13.4.1/app-readme.md b/stable/frigate/13.4.1/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/13.4.1/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/13.4.1/charts/common-19.0.0.tgz b/stable/frigate/13.4.1/charts/common-19.0.0.tgz
new file mode 100644
index 0000000..d8852c1
Binary files /dev/null and b/stable/frigate/13.4.1/charts/common-19.0.0.tgz differ
diff --git a/stable/frigate/13.4.1/ix_values.yaml b/stable/frigate/13.4.1/ix_values.yaml
new file mode 100644
index 0000000..f5513e2
--- /dev/null
+++ b/stable/frigate/13.4.1/ix_values.yaml
@@ -0,0 +1,96 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1@sha256:bb7f7e76a13eccef0b12704e5851cc774a12af1f12df387d6a70a796a3e938c3
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.12.1-tensorrt@sha256:db6e62d94206803011307296242ee6bfcc185bcf4eb6f68a6fdab8fa7f03a3fb
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml.dummy /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ fi
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ # Only enable when not using frigateConfig
+ enabled: false
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/frigate/13.4.1/questions.yaml b/stable/frigate/13.4.1/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/13.4.1/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/13.4.1/templates/NOTES.txt b/stable/frigate/13.4.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/13.4.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/13.4.1/templates/_configmap.tpl b/stable/frigate/13.4.1/templates/_configmap.tpl
new file mode 100644
index 0000000..ebf2580
--- /dev/null
+++ b/stable/frigate/13.4.1/templates/_configmap.tpl
@@ -0,0 +1,42 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ {{- if .Values.frigateConfig }}
+ config.yml: |
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ config.yml.dummy: |
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+enabled: true
+type: configmap
+objectName: frigate-config
+targetSelector:
+ main:
+ main: {}
+ init-config: {}
+{{- if .Values.frigateConfig }}
+mountPath: /config
+items:
+ - key: config.yml
+ path: config.yml
+{{- else }}
+mountPath: /dummy-config
+items:
+ - key: config.yml.dummy
+ path: config.yml.dummy
+{{- end -}}
+{{- end -}}
diff --git a/stable/frigate/13.4.1/templates/common.yaml b/stable/frigate/13.4.1/templates/common.yaml
new file mode 100644
index 0000000..6ec5e06
--- /dev/null
+++ b/stable/frigate/13.4.1/templates/common.yaml
@@ -0,0 +1,20 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+{{- if not .Values.frigateConfig -}}
+ {{- $_ := set .Values.persistence.config "enabled" true -}}
+{{- end -}}
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/13.4.1/values.yaml b/stable/frigate/13.4.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/14.3.0/.helmignore b/stable/frigate/14.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/14.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/14.3.0/CHANGELOG.md b/stable/frigate/14.3.0/CHANGELOG.md
new file mode 100644
index 0000000..7960d57
--- /dev/null
+++ b/stable/frigate/14.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
diff --git a/stable/frigate/14.3.0/Chart.yaml b/stable/frigate/14.3.0/Chart.yaml
new file mode 100644
index 0000000..6d4aebd
--- /dev/null
+++ b/stable/frigate/14.3.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.13.2
+dependencies:
+ - name: common
+ version: 20.2.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 14.3.0
diff --git a/stable/frigate/14.3.0/README.md b/stable/frigate/14.3.0/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/14.3.0/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/frigate)
+
+**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/frigate/14.3.0/app-changelog.md b/stable/frigate/14.3.0/app-changelog.md
new file mode 100644
index 0000000..c8f41b6
--- /dev/null
+++ b/stable/frigate/14.3.0/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [frigate-14.3.0](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.0) (2024-03-16)
+
+### Chore
+
+
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/frigate/14.3.0/app-readme.md b/stable/frigate/14.3.0/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/14.3.0/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/14.3.0/charts/common-20.2.0.tgz b/stable/frigate/14.3.0/charts/common-20.2.0.tgz
new file mode 100644
index 0000000..8bc207a
Binary files /dev/null and b/stable/frigate/14.3.0/charts/common-20.2.0.tgz differ
diff --git a/stable/frigate/14.3.0/ix_values.yaml b/stable/frigate/14.3.0/ix_values.yaml
new file mode 100644
index 0000000..7760996
--- /dev/null
+++ b/stable/frigate/14.3.0/ix_values.yaml
@@ -0,0 +1,101 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2@sha256:2906991ccad85035b176941f9dedfd35088ff710c39d45ef1baa9a49f2b16734
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2-tensorrt@sha256:07cc224cdf2feef0af9c860c044ac7ea0ac4adfca7f68b37dc3958bc3a3ee357
+
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ else
+ echo "Config file found, you can edit it at /config/config.yml"
+ fi
+
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ enabled: true
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+
+portal:
+ open:
+ enabled: true
diff --git a/stable/frigate/14.3.0/questions.yaml b/stable/frigate/14.3.0/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/14.3.0/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/14.3.0/templates/NOTES.txt b/stable/frigate/14.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/14.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/14.3.0/templates/_configmap.tpl b/stable/frigate/14.3.0/templates/_configmap.tpl
new file mode 100644
index 0000000..140aa24
--- /dev/null
+++ b/stable/frigate/14.3.0/templates/_configmap.tpl
@@ -0,0 +1,43 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ config.yml: |
+ {{- if .Values.frigateConfig }}
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+{{- $mountPath := "/dummy-config/config.yml" -}}
+{{- if .Values.frigateConfig }}
+ {{- $mountPath = "/config/config.yaml" -}}
+{{- end }}
+enabled: true
+type: configmap
+objectName: frigate-config
+items:
+ - key: config.yml
+ path: config.yml
+targetSelector:
+ main:
+ main:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+ init-config:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+{{- end -}}
diff --git a/stable/frigate/14.3.0/templates/common.yaml b/stable/frigate/14.3.0/templates/common.yaml
new file mode 100644
index 0000000..2b55474
--- /dev/null
+++ b/stable/frigate/14.3.0/templates/common.yaml
@@ -0,0 +1,17 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/14.3.0/values.yaml b/stable/frigate/14.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/14.3.1/.helmignore b/stable/frigate/14.3.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/14.3.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/14.3.1/CHANGELOG.md b/stable/frigate/14.3.1/CHANGELOG.md
new file mode 100644
index 0000000..3eb76be
--- /dev/null
+++ b/stable/frigate/14.3.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
diff --git a/stable/frigate/14.3.1/Chart.yaml b/stable/frigate/14.3.1/Chart.yaml
new file mode 100644
index 0000000..f775e07
--- /dev/null
+++ b/stable/frigate/14.3.1/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.13.2
+dependencies:
+ - name: common
+ version: 20.2.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 14.3.1
diff --git a/stable/frigate/14.3.1/README.md b/stable/frigate/14.3.1/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/14.3.1/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/frigate)
+
+**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/frigate/14.3.1/app-changelog.md b/stable/frigate/14.3.1/app-changelog.md
new file mode 100644
index 0000000..7102887
--- /dev/null
+++ b/stable/frigate/14.3.1/app-changelog.md
@@ -0,0 +1,11 @@
+
+
+## [frigate-14.3.1](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.1) (2024-03-17)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/frigate/14.3.1/app-readme.md b/stable/frigate/14.3.1/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/14.3.1/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/14.3.1/charts/common-20.2.2.tgz b/stable/frigate/14.3.1/charts/common-20.2.2.tgz
new file mode 100644
index 0000000..a03705c
Binary files /dev/null and b/stable/frigate/14.3.1/charts/common-20.2.2.tgz differ
diff --git a/stable/frigate/14.3.1/ix_values.yaml b/stable/frigate/14.3.1/ix_values.yaml
new file mode 100644
index 0000000..7760996
--- /dev/null
+++ b/stable/frigate/14.3.1/ix_values.yaml
@@ -0,0 +1,101 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2@sha256:2906991ccad85035b176941f9dedfd35088ff710c39d45ef1baa9a49f2b16734
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2-tensorrt@sha256:07cc224cdf2feef0af9c860c044ac7ea0ac4adfca7f68b37dc3958bc3a3ee357
+
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ else
+ echo "Config file found, you can edit it at /config/config.yml"
+ fi
+
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ enabled: true
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+
+portal:
+ open:
+ enabled: true
diff --git a/stable/frigate/14.3.1/questions.yaml b/stable/frigate/14.3.1/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/14.3.1/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/14.3.1/templates/NOTES.txt b/stable/frigate/14.3.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/14.3.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/14.3.1/templates/_configmap.tpl b/stable/frigate/14.3.1/templates/_configmap.tpl
new file mode 100644
index 0000000..140aa24
--- /dev/null
+++ b/stable/frigate/14.3.1/templates/_configmap.tpl
@@ -0,0 +1,43 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ config.yml: |
+ {{- if .Values.frigateConfig }}
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+{{- $mountPath := "/dummy-config/config.yml" -}}
+{{- if .Values.frigateConfig }}
+ {{- $mountPath = "/config/config.yaml" -}}
+{{- end }}
+enabled: true
+type: configmap
+objectName: frigate-config
+items:
+ - key: config.yml
+ path: config.yml
+targetSelector:
+ main:
+ main:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+ init-config:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+{{- end -}}
diff --git a/stable/frigate/14.3.1/templates/common.yaml b/stable/frigate/14.3.1/templates/common.yaml
new file mode 100644
index 0000000..2b55474
--- /dev/null
+++ b/stable/frigate/14.3.1/templates/common.yaml
@@ -0,0 +1,17 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/14.3.1/values.yaml b/stable/frigate/14.3.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/14.3.2/.helmignore b/stable/frigate/14.3.2/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/14.3.2/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/14.3.2/CHANGELOG.md b/stable/frigate/14.3.2/CHANGELOG.md
new file mode 100644
index 0000000..476e053
--- /dev/null
+++ b/stable/frigate/14.3.2/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
diff --git a/stable/frigate/14.3.2/Chart.yaml b/stable/frigate/14.3.2/Chart.yaml
new file mode 100644
index 0000000..eaebabe
--- /dev/null
+++ b/stable/frigate/14.3.2/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.13.2
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 14.3.2
diff --git a/stable/frigate/14.3.2/README.md b/stable/frigate/14.3.2/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/14.3.2/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/frigate)
+
+**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/frigate/14.3.2/app-changelog.md b/stable/frigate/14.3.2/app-changelog.md
new file mode 100644
index 0000000..4e57216
--- /dev/null
+++ b/stable/frigate/14.3.2/app-changelog.md
@@ -0,0 +1,13 @@
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/frigate/14.3.2/app-readme.md b/stable/frigate/14.3.2/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/14.3.2/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/14.3.2/charts/common-20.2.3.tgz b/stable/frigate/14.3.2/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/frigate/14.3.2/charts/common-20.2.3.tgz differ
diff --git a/stable/frigate/14.3.2/ix_values.yaml b/stable/frigate/14.3.2/ix_values.yaml
new file mode 100644
index 0000000..7760996
--- /dev/null
+++ b/stable/frigate/14.3.2/ix_values.yaml
@@ -0,0 +1,101 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2@sha256:2906991ccad85035b176941f9dedfd35088ff710c39d45ef1baa9a49f2b16734
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2-tensorrt@sha256:07cc224cdf2feef0af9c860c044ac7ea0ac4adfca7f68b37dc3958bc3a3ee357
+
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ else
+ echo "Config file found, you can edit it at /config/config.yml"
+ fi
+
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ enabled: true
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+
+portal:
+ open:
+ enabled: true
diff --git a/stable/frigate/14.3.2/questions.yaml b/stable/frigate/14.3.2/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/14.3.2/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/14.3.2/templates/NOTES.txt b/stable/frigate/14.3.2/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/14.3.2/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/14.3.2/templates/_configmap.tpl b/stable/frigate/14.3.2/templates/_configmap.tpl
new file mode 100644
index 0000000..140aa24
--- /dev/null
+++ b/stable/frigate/14.3.2/templates/_configmap.tpl
@@ -0,0 +1,43 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ config.yml: |
+ {{- if .Values.frigateConfig }}
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+{{- $mountPath := "/dummy-config/config.yml" -}}
+{{- if .Values.frigateConfig }}
+ {{- $mountPath = "/config/config.yaml" -}}
+{{- end }}
+enabled: true
+type: configmap
+objectName: frigate-config
+items:
+ - key: config.yml
+ path: config.yml
+targetSelector:
+ main:
+ main:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+ init-config:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+{{- end -}}
diff --git a/stable/frigate/14.3.2/templates/common.yaml b/stable/frigate/14.3.2/templates/common.yaml
new file mode 100644
index 0000000..2b55474
--- /dev/null
+++ b/stable/frigate/14.3.2/templates/common.yaml
@@ -0,0 +1,17 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/14.3.2/values.yaml b/stable/frigate/14.3.2/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/14.3.3/.helmignore b/stable/frigate/14.3.3/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/frigate/14.3.3/.helmignore
@@ -0,0 +1,30 @@
+# 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/frigate/14.3.3/CHANGELOG.md b/stable/frigate/14.3.3/CHANGELOG.md
new file mode 100644
index 0000000..a4efc94
--- /dev/null
+++ b/stable/frigate/14.3.3/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [frigate-14.3.3](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.3) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.3](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.3) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [frigate-14.3.2](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
diff --git a/stable/frigate/14.3.3/Chart.yaml b/stable/frigate/14.3.3/Chart.yaml
new file mode 100644
index 0000000..921d08a
--- /dev/null
+++ b/stable/frigate/14.3.3/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: nvr
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 0.13.2
+dependencies:
+ - name: common
+ version: 20.2.4
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: NVR With Realtime Object Detection for IP Cameras
+home: https://truecharts.org/charts/stable/frigate
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+keywords:
+ - encode
+ - nvr
+ - media
+ - frigate
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: frigate
+sources:
+ - https://github.com/blakeblackshear/frigate
+ - https://github.com/truecharts/charts/tree/master/charts/stable/frigate
+ - https://ghcr.io/blakeblackshear/frigate
+type: application
+version: 14.3.3
diff --git a/stable/frigate/14.3.3/README.md b/stable/frigate/14.3.3/README.md
new file mode 100644
index 0000000..bb1903d
--- /dev/null
+++ b/stable/frigate/14.3.3/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/frigate)
+
+**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/frigate/14.3.3/app-changelog.md b/stable/frigate/14.3.3/app-changelog.md
new file mode 100644
index 0000000..80f17fc
--- /dev/null
+++ b/stable/frigate/14.3.3/app-changelog.md
@@ -0,0 +1,15 @@
+
+
+## [frigate-14.3.3](https://github.com/truecharts/charts/compare/frigate-14.2.0...frigate-14.3.3) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/frigate/14.3.3/app-readme.md b/stable/frigate/14.3.3/app-readme.md
new file mode 100644
index 0000000..2f2f6dd
--- /dev/null
+++ b/stable/frigate/14.3.3/app-readme.md
@@ -0,0 +1,8 @@
+NVR With Realtime Object Detection for IP Cameras
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/frigate](https://truecharts.org/charts/stable/frigate)
+
+---
+
+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/frigate/14.3.3/charts/common-20.2.4.tgz b/stable/frigate/14.3.3/charts/common-20.2.4.tgz
new file mode 100644
index 0000000..e02a4ec
Binary files /dev/null and b/stable/frigate/14.3.3/charts/common-20.2.4.tgz differ
diff --git a/stable/frigate/14.3.3/ix_values.yaml b/stable/frigate/14.3.3/ix_values.yaml
new file mode 100644
index 0000000..7760996
--- /dev/null
+++ b/stable/frigate/14.3.3/ix_values.yaml
@@ -0,0 +1,101 @@
+image:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2@sha256:2906991ccad85035b176941f9dedfd35088ff710c39d45ef1baa9a49f2b16734
+tensorrtImage:
+ repository: ghcr.io/blakeblackshear/frigate
+ pullPolicy: IfNotPresent
+ tag: 0.13.2-tensorrt@sha256:07cc224cdf2feef0af9c860c044ac7ea0ac4adfca7f68b37dc3958bc3a3ee357
+
+# When this is defined, the contents will be mounted
+# as configmap into the container at /config/config.yml.
+frigateConfig: {}
+# -- https://docs.frigate.video/configuration/
+# mqtt:
+# enabled: False
+# cameras:
+# dummy:
+# enabled: False
+# ffmpeg:
+# inputs:
+# - path: rtsp://127.0.0.1:554/rtsp
+# roles:
+# - detect
+
+workload:
+ main:
+ podSpec:
+ initContainers:
+ init-config:
+ enabled: "{{ not .Values.frigateConfig }}"
+ type: init
+ imageSelector: alpineImage
+ command:
+ - /bin/sh
+ - -c
+ - |
+ mkdir -p /config
+ if [ ! -f /config/config.yml ]; then
+ echo "Config file not found, copying dummy..."
+ cp /dummy-config/config.yml /config/config.yml
+ echo "Config file copied, you can now edit it at /config/config.yml"
+ else
+ echo "Config file found, you can edit it at /config/config.yml"
+ fi
+
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+
+service:
+ main:
+ ports:
+ main:
+ port: 10500
+ protocol: http
+ targetPort: 5000
+ rtmp:
+ enabled: true
+ ports:
+ rtmp:
+ enabled: true
+ port: 1935
+ targetPort: 1935
+ rtsp:
+ enabled: true
+ ports:
+ rtsp:
+ enabled: true
+ port: 8554
+ targetPort: 8554
+ webrtc:
+ enabled: true
+ ports:
+ webrtc-tcp:
+ enabled: true
+ port: 8555
+ targetPort: 8555
+ webrtc-udp:
+ enabled: true
+ port: 8555
+ protocol: udp
+ targetPort: 8555
+
+persistence:
+ media:
+ enabled: true
+ mountPath: /media
+ config:
+ enabled: true
+ mountPath: /config
+ targetSelector:
+ main:
+ main: {}
+ init-config: {}
+
+portal:
+ open:
+ enabled: true
diff --git a/stable/frigate/14.3.3/questions.yaml b/stable/frigate/14.3.3/questions.yaml
new file mode 100644
index 0000000..2bbd14f
--- /dev/null
+++ b/stable/frigate/14.3.3/questions.yaml
@@ -0,0 +1,3293 @@
+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: imageSelector
+ label: Select Image
+ schema:
+ type: string
+ default: image
+ enum:
+ - value: image
+ description: Base Image
+ - value: tensorrtImage
+ description: Image with TensorRT libraries for nvidia cards
+ - 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: 10500
+ required: true
+ - variable: rtmp
+ label: RTMP Service
+ description: The service on which nodes connect to.
+ 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: rtmp
+ label: RTMP 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: 1935
+ required: true
+ - variable: rtsp
+ label: RTSP Service
+ description: The service on which nodes connect to.
+ 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: rtsp
+ label: RTSP 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: 8554
+ required: true
+ - variable: webrtc
+ label: WebRTC Service
+ description: The service on which nodes connect to.
+ 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: webrtc-tcp
+ label: WebRTC (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: 8555
+ required: true
+ - variable: webrtc-udp
+ label: WebRTC (UDP) 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: 8555
+ 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: media
+ label: App Media
+ description: Stores the Application Media and DB
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
+
+ - variable: config
+ label: App Config
+ 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: 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: '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: 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: 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/frigate/14.3.3/templates/NOTES.txt b/stable/frigate/14.3.3/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/frigate/14.3.3/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/frigate/14.3.3/templates/_configmap.tpl b/stable/frigate/14.3.3/templates/_configmap.tpl
new file mode 100644
index 0000000..140aa24
--- /dev/null
+++ b/stable/frigate/14.3.3/templates/_configmap.tpl
@@ -0,0 +1,43 @@
+{{/* Define the configmap */}}
+{{- define "frigate.configmap" -}}
+enabled: true
+data:
+ config.yml: |
+ {{- if .Values.frigateConfig }}
+ {{- .Values.frigateConfig | toYaml | nindent 4 }}
+ {{- else }}
+ mqtt:
+ enabled: false
+ cameras:
+ dummy:
+ enabled: false
+ ffmpeg:
+ inputs:
+ - path: rtsp://127.0.0.1:554/rtsp
+ roles:
+ - detect
+ {{- end }}
+{{- end -}}
+
+{{- define "frigate.configVolume" -}}
+{{- $mountPath := "/dummy-config/config.yml" -}}
+{{- if .Values.frigateConfig }}
+ {{- $mountPath = "/config/config.yaml" -}}
+{{- end }}
+enabled: true
+type: configmap
+objectName: frigate-config
+items:
+ - key: config.yml
+ path: config.yml
+targetSelector:
+ main:
+ main:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+ init-config:
+ subPath: config.yml
+ mountPath: {{ $mountPath }}
+ readOnly: true
+{{- end -}}
diff --git a/stable/frigate/14.3.3/templates/common.yaml b/stable/frigate/14.3.3/templates/common.yaml
new file mode 100644
index 0000000..2b55474
--- /dev/null
+++ b/stable/frigate/14.3.3/templates/common.yaml
@@ -0,0 +1,17 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render configmap for frigate */}}
+{{- $config := include "frigate.configmap" . | fromYaml -}}
+{{- if $config -}}
+ {{- $_ := set .Values.configmap "frigate-config" $config -}}
+{{- end -}}
+
+
+{{- $vol := include "frigate.configVolume" . | fromYaml -}}
+{{- if $vol -}}
+ {{- $_ := set .Values.persistence "frigate-config" $vol -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/frigate/14.3.3/values.yaml b/stable/frigate/14.3.3/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/frigate/app_versions.json b/stable/frigate/app_versions.json
new file mode 100644
index 0000000..9a9e948
--- /dev/null
+++ b/stable/frigate/app_versions.json
@@ -0,0 +1,57538 @@
+{
+ "14.3.3": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/14.3.3",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.13.2_14.3.3",
+ "version": "14.3.3",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.13.2",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.4",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "14.3.3"
+ },
+ "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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- update container image common to v20.2.3@06e462e by renovate (#19673)
\n
"
+ },
+ "14.3.2": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/14.3.2",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.13.2_14.3.2",
+ "version": "14.3.2",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.13.2",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "14.3.2"
+ },
+ "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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
"
+ },
+ "14.3.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/14.3.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.13.2_14.3.1",
+ "version": "14.3.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.13.2",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "14.3.1"
+ },
+ "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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n\nChore
\n\n"
+ },
+ "14.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/14.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.13.2_14.3.0",
+ "version": "14.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.13.2",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "14.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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
\n\nChore
\n\n- update container image common to v20.2.0@91ade87 by renovate (#19361)
\n
"
+ },
+ "13.4.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/13.4.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.12.1_13.4.1",
+ "version": "13.4.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.12.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "19.0.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "13.4.1"
+ },
+ "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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- bump everything to trigger re-release
\n
\n\nChore
\n\n- update container image common to v19.0.0@eef2062 by renovate (#18956)
\n
\n\nChore
\n\n- update container image common to v18.2.0@9e8b7d4 by renovate (#18943)
\n
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
"
+ },
+ "13.4.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/13.4.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.12.1_13.4.0",
+ "version": "13.4.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.12.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "19.0.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "13.4.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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v19.0.0@eef2062 by renovate (#18956)
\n
\n\nChore
\n\n- update container image common to v18.2.0@9e8b7d4 by renovate (#18943)
\n
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
"
+ },
+ "13.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/13.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.12.1_13.3.0",
+ "version": "13.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.12.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.2.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "13.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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v18.2.0@9e8b7d4 by renovate (#18943)
\n
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
"
+ },
+ "13.2.3": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/13.2.3",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "0.12.1_13.2.3",
+ "version": "13.2.3",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.12.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.1.6",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "13.2.3"
+ },
+ "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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- bump everything to force helm release again
\n
\n\nChore
\n\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image common to v17.2.22@e7c9056 by renovate (#16986)
\n
\n\nChore
"
+ },
+ "12.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/12.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "0.12.1_12.3.0",
+ "version": "12.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.12.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.5.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "12.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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image common to v17.2.22@e7c9056 by renovate (#16986)
\n
\n\nChore
\n\n- force bump to ensure up-to-date catalogs
\n
\n\nChore
\n\n\nChore
\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
"
+ },
+ "12.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/frigate/12.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "0.12.1_12.2.0",
+ "version": "12.2.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "nvr",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "0.12.1",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "NVR With Realtime Object Detection for IP Cameras",
+ "home": "https://truecharts.org/charts/stable/frigate",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png",
+ "keywords": [
+ "encode",
+ "nvr",
+ "media",
+ "frigate"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "frigate",
+ "sources": [
+ "https://github.com/blakeblackshear/frigate",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/frigate",
+ "https://ghcr.io/blakeblackshear/frigate"
+ ],
+ "type": "application",
+ "version": "12.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": "imageSelector",
+ "label": "Select Image",
+ "schema": {
+ "type": "string",
+ "default": "image",
+ "enum": [
+ {
+ "value": "image",
+ "description": "Base Image"
+ },
+ {
+ "value": "tensorrtImage",
+ "description": "Image with TensorRT libraries for nvidia cards"
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 10500,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtmp",
+ "label": "RTMP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtmp",
+ "label": "RTMP 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": 1935,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "rtsp",
+ "label": "RTSP Service",
+ "description": "The service on which nodes connect to.",
+ "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": "rtsp",
+ "label": "RTSP 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": 8554,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc",
+ "label": "WebRTC Service",
+ "description": "The service on which nodes connect to.",
+ "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": "webrtc-tcp",
+ "label": "WebRTC (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": 8555,
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "webrtc-udp",
+ "label": "WebRTC (UDP) 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": 8555,
+ "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": "media",
+ "label": "App Media",
+ "description": "Stores the Application Media and DB",
+ "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": "config",
+ "label": "App Config",
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID this App of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "NVR With Realtime Object Detection for IP Cameras
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/frigate
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image common to v17.2.22@e7c9056 by renovate (#16986)
\n
\n\nChore
\n\n- force bump to ensure up-to-date catalogs
\n
\n\nChore
\n\n\nChore
\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/frigate/item.yaml b/stable/frigate/item.yaml
new file mode 100644
index 0000000..2502de5
--- /dev/null
+++ b/stable/frigate/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
+categories:
+ - nvr
+screenshots: []
diff --git a/stable/gitea/17.2.0/.helmignore b/stable/gitea/17.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/gitea/17.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/gitea/17.2.0/CHANGELOG.md b/stable/gitea/17.2.0/CHANGELOG.md
new file mode 100644
index 0000000..e45349f
--- /dev/null
+++ b/stable/gitea/17.2.0/CHANGELOG.md
@@ -0,0 +1,1738 @@
+---
+title: Changelog
+---
+
+## [gitea-10.0.0](https://github.com/truecharts/charts/compare/gitea-9.0.30...gitea-10.0.0) (2022-11-10)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Major Change to GUI
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [gitea-9.0.33](https://github.com/truecharts/charts/compare/gitea-9.0.30...gitea-9.0.33) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [gitea-9.0.32](https://github.com/truecharts/charts/compare/gitea-9.0.30...gitea-9.0.32) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [gitea-9.0.32](https://github.com/truecharts/charts/compare/gitea-9.0.30...gitea-9.0.32) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [gitea-9.0.32](https://github.com/truecharts/charts/compare/gitea-9.0.30...gitea-9.0.32) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [gitea-9.0.31](https://github.com/truecharts/charts/compare/gitea-9.0.30...gitea-9.0.31) (2022-11-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [gitea-9.0.31](https://github.com/truecharts/charts/compare/gitea-9.0.30...gitea-9.0.31) (2022-11-06)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [gitea-9.0.30](https://github.com/truecharts/charts/compare/gitea-9.0.29...gitea-9.0.30) (2022-11-06)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317))
+
+## [gitea-9.0.29](https://github.com/truecharts/charts/compare/gitea-9.0.28...gitea-9.0.29) (2022-11-05)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308))
+
+## [gitea-9.0.28](https://github.com/truecharts/charts/compare/gitea-9.0.27...gitea-9.0.28) (2022-11-02)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261))
+
+## [gitea-9.0.27](https://github.com/truecharts/charts/compare/gitea-9.0.26...gitea-9.0.27) (2022-10-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major
+
+## [gitea-9.0.26](https://github.com/truecharts/charts/compare/gitea-9.0.25...gitea-9.0.26) (2022-10-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182))
+
+## [gitea-9.0.25](https://github.com/truecharts/charts/compare/gitea-9.0.24...gitea-9.0.25) (2022-10-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122))
+
+## [gitea-9.0.24](https://github.com/truecharts/charts/compare/gitea-9.0.23...gitea-9.0.24) (2022-10-16)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update docker general non-major ([#4108](https://github.com/truecharts/charts/issues/4108))
+
+## [gitea-9.0.23](https://github.com/truecharts/charts/compare/gitea-9.0.22...gitea-9.0.23) (2022-10-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071))
+
+## [gitea-9.0.22](https://github.com/truecharts/charts/compare/gitea-9.0.21...gitea-9.0.22) (2022-10-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major
+
+## [gitea-9.0.22](https://github.com/truecharts/charts/compare/gitea-9.0.21...gitea-9.0.22) (2022-10-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major
+
+## [gitea-9.0.21](https://github.com/truecharts/charts/compare/gitea-9.0.20...gitea-9.0.21) (2022-10-05)
+
+### Chore
+
+- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979))
+- update helm general non-major
+
+## [gitea-9.0.19](https://github.com/truecharts/charts/compare/gitea-9.0.18...gitea-9.0.19) (2022-09-27)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918))
+
+## [gitea-9.0.18](https://github.com/truecharts/charts/compare/gitea-9.0.17...gitea-9.0.18) (2022-09-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-22)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-21)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-21)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-20)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-20)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-17)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-18)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-16)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-16)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-15)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.17](https://github.com/truecharts/charts/compare/gitea-9.0.16...gitea-9.0.17) (2022-09-15)
+
+### Chore
+
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [gitea-9.0.16](https://github.com/truecharts/charts/compare/gitea-9.0.15...gitea-9.0.16) (2022-09-13)
+
+### Chore
+
+- update helm chart memcached to v3.0.75 ([#3759](https://github.com/truecharts/charts/issues/3759))
+
+## [gitea-9.0.15](https://github.com/truecharts/charts/compare/gitea-9.0.14...gitea-9.0.15) (2022-09-13)
+
+### Chore
+
+- update helm general non-major ([#3756](https://github.com/truecharts/charts/issues/3756))
+
+## [gitea-9.0.14](https://github.com/truecharts/charts/compare/gitea-9.0.13...gitea-9.0.14) (2022-09-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [gitea-9.0.14](https://github.com/truecharts/charts/compare/gitea-9.0.13...gitea-9.0.14) (2022-09-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [gitea-9.0.14](https://github.com/truecharts/charts/compare/gitea-9.0.13...gitea-9.0.14) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [gitea-9.0.14](https://github.com/truecharts/charts/compare/gitea-9.0.13...gitea-9.0.14) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [gitea-9.0.14](https://github.com/truecharts/charts/compare/gitea-9.0.13...gitea-9.0.14) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [gitea-9.0.14](https://github.com/truecharts/charts/compare/gitea-9.0.13...gitea-9.0.14) (2022-09-11)
+
+### Chore
+
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [gitea-9.0.13](https://github.com/truecharts/charts/compare/gitea-9.0.12...gitea-9.0.13) (2022-09-10)
+
+### Chore
+
+- update docker general non-major ([#3727](https://github.com/truecharts/charts/issues/3727))
+
+## [gitea-9.0.12](https://github.com/truecharts/charts/compare/gitea-9.0.10...gitea-9.0.12) (2022-08-30)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639))
+- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626))
+
+## [gitea-9.0.11](https://github.com/truecharts/charts/compare/gitea-9.0.10...gitea-9.0.11) (2022-08-30)
+
+### Chore
+
+- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626))
+
+## [gitea-9.0.10](https://github.com/truecharts/charts/compare/gitea-9.0.9...gitea-9.0.10) (2022-08-30)
+
+### Chore
+
+- update helm general non-major ([#3624](https://github.com/truecharts/charts/issues/3624))
+
+## [gitea-9.0.9](https://github.com/truecharts/charts/compare/gitea-9.0.7...gitea-9.0.9) (2022-08-29)
+
+### Chore
+
+- update helm general non-major ([#3621](https://github.com/truecharts/charts/issues/3621))
+- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619))
+
+## [gitea-9.0.7](https://github.com/truecharts/charts/compare/gitea-9.0.6...gitea-9.0.7) (2022-08-23)
+
+### Chore
+
+- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545))
+
+## [gitea-9.0.6](https://github.com/truecharts/charts/compare/gitea-9.0.5...gitea-9.0.6) (2022-08-20)
+
+### Chore
+
+- update docker general non-major docker tags ([#3518](https://github.com/truecharts/charts/issues/3518))
+
+## [gitea-9.0.5](https://github.com/truecharts/charts/compare/gitea-9.0.4...gitea-9.0.5) (2022-08-17)
+
+### Chore
+
+- update helm general non-major helm releases ([#3484](https://github.com/truecharts/charts/issues/3484))
+
+## [gitea-9.0.4](https://github.com/truecharts/charts/compare/gitea-9.0.3...gitea-9.0.4) (2022-08-13)
+
+### Fix
+
+- Add WebHook config ([#3463](https://github.com/truecharts/charts/issues/3463))
+
+## [gitea-9.0.3](https://github.com/truecharts/charts/compare/gitea-9.0.2...gitea-9.0.3) (2022-08-12)
+
+### Chore
+
+- add documentation checkbox/section to all SCALE Apps
+- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456))
+
+### Fix
+
+- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447))
+
+## [gitea-9.0.2](https://github.com/truecharts/charts/compare/gitea-9.0.1...gitea-9.0.2) (2022-08-09)
+
+### Chore
+
+- update helm general non-major helm releases to v10.4.9 ([#3413](https://github.com/truecharts/charts/issues/3413))
+
+## [gitea-9.0.1](https://github.com/truecharts/charts/compare/gitea-8.0.27...gitea-9.0.1) (2022-08-08)
+
+### Chore
+
+- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376))
+- update docker general non-major ([#3356](https://github.com/truecharts/charts/issues/3356))
+- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402))
+
+## [gitea-8.0.27](https://github.com/truecharts/apps/compare/gitea-8.0.26...gitea-8.0.27) (2022-07-26)
+
+### Chore
+
+- update home links ([#3291](https://github.com/truecharts/apps/issues/3291))
+- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302))
+
+## [gitea-8.0.26](https://github.com/truecharts/apps/compare/gitea-8.0.25...gitea-8.0.26) (2022-07-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295))
+
+## [gitea-8.0.26](https://github.com/truecharts/apps/compare/gitea-8.0.25...gitea-8.0.26) (2022-07-25)
+
+### Chore
+
+- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295))
+
+## [gitea-8.0.25](https://github.com/truecharts/apps/compare/gitea-8.0.24...gitea-8.0.25) (2022-07-23)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [gitea-8.0.25](https://github.com/truecharts/apps/compare/gitea-8.0.24...gitea-8.0.25) (2022-07-23)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [gitea-8.0.25](https://github.com/truecharts/apps/compare/gitea-8.0.24...gitea-8.0.25) (2022-07-23)
+
+### Chore
+
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [gitea-8.0.24](https://github.com/truecharts/apps/compare/gitea-8.0.23...gitea-8.0.24) (2022-07-23)
+
+### Chore
+
+- update helm general non-major helm releases ([#3274](https://github.com/truecharts/apps/issues/3274))
+
+## [gitea-8.0.23](https://github.com/truecharts/apps/compare/gitea-8.0.21...gitea-8.0.23) (2022-07-22)
+
+### Chore
+
+- Bump all charts to generate config and container references due to huge increase of repository
+- update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268))
+
+## [gitea-8.0.21](https://github.com/truecharts/apps/compare/gitea-8.0.20...gitea-8.0.21) (2022-07-19)
+
+### Chore
+
+- Update Readme and Description on SCALE
+
+## [gitea-8.0.20](https://github.com/truecharts/apps/compare/gitea-8.0.19...gitea-8.0.20) (2022-07-14)
+
+### Fix
+
+- regenerate catalog and update template
+
+## [gitea-8.0.19](https://github.com/truecharts/apps/compare/gitea-8.0.17...gitea-8.0.19) (2022-07-14)
+
+### Fix
+
+- bump to ensure .helmignore is present on all Charts
+
+## [gitea-8.0.17](https://github.com/truecharts/apps/compare/gitea-8.0.16...gitea-8.0.17) (2022-07-13)
+
+### Chore
+
+- update docker general non-major ([#3157](https://github.com/truecharts/apps/issues/3157))
+
+## [gitea-8.0.16](https://github.com/truecharts/apps/compare/gitea-8.0.14...gitea-8.0.16) (2022-07-12)
+
+### Chore
+
+- update icons ([#3156](https://github.com/truecharts/apps/issues/3156))
+- bump to cleanup old docs and use correct icon urls
+
+## [gitea-8.0.14](https://github.com/truecharts/apps/compare/gitea-8.0.13...gitea-8.0.14) (2022-07-12)
+
+### Chore
+
+- bump to regenerate documentation
+
+
+
+### [gitea-8.0.13](https://github.com/truecharts/apps/compare/gitea-8.0.12...gitea-8.0.13) (2022-07-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147))
+
+
+
+### [gitea-8.0.12](https://github.com/truecharts/apps/compare/gitea-8.0.11...gitea-8.0.12) (2022-07-11)
+
+#### Chore
+
+- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139))
+
+
+
+### [gitea-8.0.11](https://github.com/truecharts/apps/compare/gitea-8.0.10...gitea-8.0.11) (2022-07-09)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113))
+
+
+
+### [gitea-8.0.10](https://github.com/truecharts/apps/compare/gitea-8.0.9...gitea-8.0.10) (2022-07-05)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3075](https://github.com/truecharts/apps/issues/3075))
+
+
+
+### [gitea-8.0.9](https://github.com/truecharts/apps/compare/gitea-8.0.8...gitea-8.0.9) (2022-07-04)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066))
+
+
+
+### [gitea-8.0.8](https://github.com/truecharts/apps/compare/gitea-8.0.7...gitea-8.0.8) (2022-06-29)
+
+#### Chore
+
+- update helm general non-major Helm releases ([#3003](https://github.com/truecharts/apps/issues/3003))
+
+
+
+### [gitea-8.0.7](https://github.com/truecharts/apps/compare/gitea-8.0.6...gitea-8.0.7) (2022-06-26)
+
+#### Gitea
+
+- change questions.yaml admin password to private ([#2991](https://github.com/truecharts/apps/issues/2991))
+
+
+
+### [gitea-8.0.6](https://github.com/truecharts/apps/compare/gitea-8.0.5...gitea-8.0.6) (2022-06-25)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977))
+
+
+
+### [gitea-8.0.5](https://github.com/truecharts/apps/compare/gitea-8.0.4...gitea-8.0.5) (2022-06-22)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948))
+
+
+
+### [gitea-8.0.4](https://github.com/truecharts/apps/compare/gitea-8.0.3...gitea-8.0.4) (2022-06-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943))
+
+
+
+### [gitea-8.0.3](https://github.com/truecharts/apps/compare/gitea-8.0.2...gitea-8.0.3) (2022-06-14)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2887](https://github.com/truecharts/apps/issues/2887))
+
+
+
+### [gitea-8.0.2](https://github.com/truecharts/apps/compare/gitea-8.0.1...gitea-8.0.2) (2022-06-14)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886))
+
+
+
+### [gitea-8.0.1](https://github.com/truecharts/apps/compare/gitea-8.0.0...gitea-8.0.1) (2022-06-11)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854))
+
+
+
+### [gitea-8.0.0](https://github.com/truecharts/apps/compare/gitea-7.0.1...gitea-8.0.0) (2022-06-07)
+
+#### Chore
+
+- update helm general major helm releases ([#2804](https://github.com/truecharts/apps/issues/2804))
+
+#### Fix
+
+- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format.
+
+
+
+### [gitea-7.0.1](https://github.com/truecharts/apps/compare/gitea-6.0.29...gitea-7.0.1) (2022-06-07)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- sync all apps persistence configuration and always default to PVC
+- update helm general non-major helm releases ([#2838](https://github.com/truecharts/apps/issues/2838))
+
+#### Fix
+
+- remove malfunctioning SCALE migration script
+
+#### Refactor
+
+- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836))
+
+
+
+### [gitea-7.0.0](https://github.com/truecharts/apps/compare/gitea-6.0.29...gitea-7.0.0) (2022-06-07)
+
+#### Chore
+
+- sync all apps persistence configuration and always default to PVC
+
+#### Refactor
+
+- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836))
+
+
+
+### [gitea-6.0.29](https://github.com/truecharts/apps/compare/gitea-6.0.28...gitea-6.0.29) (2022-05-31)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803))
+
+
+
+### [gitea-6.0.28](https://github.com/truecharts/apps/compare/gitea-6.0.27...gitea-6.0.28) (2022-05-26)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759))
+
+
+
+### [gitea-6.0.28](https://github.com/truecharts/apps/compare/gitea-6.0.27...gitea-6.0.28) (2022-05-26)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759))
+
+
+
+### [gitea-6.0.27](https://github.com/truecharts/apps/compare/gitea-6.0.26...gitea-6.0.27) (2022-05-24)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [gitea-6.0.26](https://github.com/truecharts/apps/compare/gitea-6.0.25...gitea-6.0.26) (2022-05-17)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases
+
+
+
+### [gitea-6.0.26](https://github.com/truecharts/apps/compare/gitea-6.0.25...gitea-6.0.26) (2022-05-17)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [gitea-6.0.25](https://github.com/truecharts/apps/compare/gitea-6.0.24...gitea-6.0.25) (2022-05-17)
+
+#### Chore
+
+- update docker general non-major ([#2695](https://github.com/truecharts/apps/issues/2695))
+- update helm general non-major helm releases
+
+
+
+### [gitea-6.0.24](https://github.com/truecharts/apps/compare/gitea-6.0.23...gitea-6.0.24) (2022-05-10)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649))
+
+
+
+### [gitea-6.0.23](https://github.com/truecharts/apps/compare/gitea-6.0.22...gitea-6.0.23) (2022-05-05)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612))
+
+
+
+### [gitea-6.0.22](https://github.com/truecharts/apps/compare/gitea-6.0.21...gitea-6.0.22) (2022-05-04)
+
+#### Chore
+
+- update docker general non-major ([#2606](https://github.com/truecharts/apps/issues/2606))
+
+
+
+### [gitea-6.0.21](https://github.com/truecharts/apps/compare/gitea-6.0.20...gitea-6.0.21) (2022-05-04)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2605](https://github.com/truecharts/apps/issues/2605))
+
+
+
+### [gitea-6.0.20](https://github.com/truecharts/apps/compare/gitea-6.0.19...gitea-6.0.20) (2022-04-26)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573))
+
+
+
+### [gitea-6.0.19](https://github.com/truecharts/apps/compare/gitea-6.0.18...gitea-6.0.19) (2022-04-26)
+
+#### Chore
+
+- update docker general non-major ([#2571](https://github.com/truecharts/apps/issues/2571))
+
+
+
+### [gitea-6.0.18](https://github.com/truecharts/apps/compare/gitea-6.0.17...gitea-6.0.18) (2022-04-20)
+
+#### Chore
+
+- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515))
+- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524))
+
+
+
+### [gitea-6.0.17](https://github.com/truecharts/apps/compare/gitea-6.0.16...gitea-6.0.17) (2022-04-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480))
+
+
+
+### [gitea-6.0.16](https://github.com/truecharts/apps/compare/gitea-6.0.15...gitea-6.0.16) (2022-04-03)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410))
+
+
+
+### [gitea-6.0.15](https://github.com/truecharts/apps/compare/gitea-6.0.14...gitea-6.0.15) (2022-03-31)
+
+#### Fix
+
+- set user and group to 1000 ([#2356](https://github.com/truecharts/apps/issues/2356))
+
+
+
+### [gitea-6.0.14](https://github.com/truecharts/apps/compare/gitea-6.0.13...gitea-6.0.14) (2022-03-31)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2362](https://github.com/truecharts/apps/issues/2362))
+
+
+
+### [gitea-6.0.13](https://github.com/truecharts/apps/compare/gitea-6.0.12...gitea-6.0.13) (2022-03-31)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361))
+
+
+
+### [gitea-6.0.12](https://github.com/truecharts/apps/compare/gitea-6.0.11...gitea-6.0.12) (2022-03-30)
+
+#### Chore
+
+- Use new repo ([#2337](https://github.com/truecharts/apps/issues/2337))
+- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354))
+
+
+
+### [gitea-6.0.11](https://github.com/truecharts/apps/compare/gitea-6.0.10...gitea-6.0.11) (2022-03-26)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2290](https://github.com/truecharts/apps/issues/2290))
+
+
+
+### [gitea-6.0.10](https://github.com/truecharts/apps/compare/gitea-6.0.9...gitea-6.0.10) (2022-03-26)
+
+#### Chore
+
+- bump all apps to trigger ci
+
+
+
+### [gitea-6.0.8](https://github.com/truecharts/apps/compare/gitea-6.0.7...gitea-6.0.8) (2022-03-24)
+
+#### Chore
+
+- update docker general non-major
+
+
+
+### [gitea-6.0.5](https://github.com/truecharts/apps/compare/gitea-6.0.4...gitea-6.0.5) (2022-03-17)
+
+#### Chore
+
+- update docker general non-major ([#2198](https://github.com/truecharts/apps/issues/2198))
+- update docker general non-major ([#2196](https://github.com/truecharts/apps/issues/2196))
+
+
+
+### [gitea-6.0.3](https://github.com/truecharts/apps/compare/gitea-6.0.2...gitea-6.0.3) (2022-03-08)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2116](https://github.com/truecharts/apps/issues/2116))
+
+
+
+### [gitea-6.0.2](https://github.com/truecharts/apps/compare/gitea-6.0.1...gitea-6.0.2) (2022-03-07)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111))
+
+
+
+### [gitea-6.0.1](https://github.com/truecharts/apps/compare/gitea-6.0.0...gitea-6.0.1) (2022-03-07)
+
+#### Chore
+
+- update docker general non-major ([#2046](https://github.com/truecharts/apps/issues/2046))
+- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040))
+
+
+
+### [gitea-6.0.0](https://github.com/truecharts/apps/compare/gitea-5.0.45...gitea-6.0.0) (2022-03-03)
+
+#### Chore
+
+- remove fixed env from questions.yaml
+- remove empty env var declaration from questions.yaml
+- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021))
+
+#### Fix
+
+- BREAKING CHANGE Move some env-vars outside of env section ([#2010](https://github.com/truecharts/apps/issues/2010))
+
+
+
+### [gitea-5.0.45](https://github.com/truecharts/apps/compare/gitea-5.0.44...gitea-5.0.45) (2022-03-02)
+
+#### Chore
+
+- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957))
+- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999))
+
+
+
+### [gitea-5.0.44](https://github.com/truecharts/apps/compare/gitea-5.0.43...gitea-5.0.44) (2022-02-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927))
+
+
+
+### [gitea-5.0.43](https://github.com/truecharts/apps/compare/gitea-5.0.42...gitea-5.0.43) (2022-02-15)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901))
+- remove dups from configmap ([#1878](https://github.com/truecharts/apps/issues/1878))
+
+
+
+### [gitea-5.0.42](https://github.com/truecharts/apps/compare/gitea-5.0.41...gitea-5.0.42) (2022-02-12)
+
+#### Fix
+
+- fix ci ([#1883](https://github.com/truecharts/apps/issues/1883))
+
+
+
+### [gitea-5.0.41](https://github.com/truecharts/apps/compare/gitea-5.0.40...gitea-5.0.41) (2022-02-10)
+
+#### Chore
+
+- update docker general non-major ([#1876](https://github.com/truecharts/apps/issues/1876))
+
+
+
+### [gitea-5.0.40](https://github.com/truecharts/apps/compare/gitea-5.0.39...gitea-5.0.40) (2022-02-08)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871))
+
+
+
+### [gitea-5.0.39](https://github.com/truecharts/apps/compare/gitea-5.0.38...gitea-5.0.39) (2022-02-06)
+
+#### Chore
+
+- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859))
+
+
+
+### [gitea-5.0.38](https://github.com/truecharts/apps/compare/gitea-5.0.37...gitea-5.0.38) (2022-02-05)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852))
+
+
+
+### [gitea-5.0.37](https://github.com/truecharts/apps/compare/gitea-5.0.36...gitea-5.0.37) (2022-02-02)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828))
+
+
+
+### [gitea-5.0.36](https://github.com/truecharts/apps/compare/gitea-5.0.35...gitea-5.0.36) (2022-01-31)
+
+#### Chore
+
+- update docker general non-major docker tags ([#1823](https://github.com/truecharts/apps/issues/1823))
+
+
+
+### [gitea-5.0.35](https://github.com/truecharts/apps/compare/gitea-5.0.34...gitea-5.0.35) (2022-01-25)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791))
+
+
+
+### [gitea-5.0.34](https://github.com/truecharts/apps/compare/gitea-5.0.33...gitea-5.0.34) (2022-01-24)
+
+#### Fix
+
+- fix include ([#1773](https://github.com/truecharts/apps/issues/1773))
+
+
+
+### [gitea-5.0.33](https://github.com/truecharts/apps/compare/gitea-5.0.32...gitea-5.0.33) (2022-01-22)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766))
+
+
+
+### [gitea-5.0.32](https://github.com/truecharts/apps/compare/gitea-5.0.30...gitea-5.0.32) (2022-01-22)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1763](https://github.com/truecharts/apps/issues/1763))
+- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759))
+
+#### Fix
+
+- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750))
+
+
+
+### [gitea-5.0.31](https://github.com/truecharts/apps/compare/gitea-5.0.30...gitea-5.0.31) (2022-01-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759))
+
+#### Fix
+
+- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750))
+
+
+
+### [gitea-5.0.30](https://github.com/truecharts/apps/compare/gitea-5.0.29...gitea-5.0.30) (2022-01-18)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1732](https://github.com/truecharts/apps/issues/1732))
+
+
+
+### [gitea-5.0.29](https://github.com/truecharts/apps/compare/gitea-5.0.28...gitea-5.0.29) (2022-01-17)
+
+#### Chore
+
+- update docker general non-major ([#1728](https://github.com/truecharts/apps/issues/1728))
+
+
+
+### [gitea-5.0.28](https://github.com/truecharts/apps/compare/gitea-5.0.27...gitea-5.0.28) (2022-01-13)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712))
+
+#### Feat
+
+- expose capabilities in GUI ([#1709](https://github.com/truecharts/apps/issues/1709))
+
+
+
+### [gitea-5.0.27](https://github.com/truecharts/apps/compare/gitea-5.0.26...gitea-5.0.27) (2022-01-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704))
+
+
+
+### [gitea-5.0.26](https://github.com/truecharts/apps/compare/gitea-5.0.25...gitea-5.0.26) (2022-01-11)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693))
+
+
+
+### [gitea-5.0.25](https://github.com/truecharts/apps/compare/gitea-5.0.24...gitea-5.0.25) (2022-01-10)
+
+#### Chore
+
+- update docker general non-major ([#1677](https://github.com/truecharts/apps/issues/1677))
+
+
+
+### [gitea-5.0.24](https://github.com/truecharts/apps/compare/gitea-5.0.23...gitea-5.0.24) (2022-01-04)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [gitea-5.0.23](https://github.com/truecharts/apps/compare/gitea-5.0.22...gitea-5.0.23) (2022-01-03)
+
+#### Chore
+
+- update docker general non-major ([#1646](https://github.com/truecharts/apps/issues/1646))
+
+
+
+### [gitea-5.0.22](https://github.com/truecharts/apps/compare/gitea-5.0.21...gitea-5.0.22) (2021-12-28)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623))
+
+
+
+### [gitea-5.0.21](https://github.com/truecharts/apps/compare/gitea-5.0.20...gitea-5.0.21) (2021-12-24)
+
+#### Chore
+
+- update docker general non-major docker tags ([#1609](https://github.com/truecharts/apps/issues/1609))
+
+
+
+### [gitea-5.0.20](https://github.com/truecharts/apps/compare/gitea-5.0.19...gitea-5.0.20) (2021-12-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596))
+
+
+
+### [gitea-5.0.19](https://github.com/truecharts/apps/compare/gitea-5.0.18...gitea-5.0.19) (2021-12-19)
+
+#### Chore
+
+- Last patch bump before RC2 branch-off
+- remove `editable: true` as this is the default ([#1576](https://github.com/truecharts/apps/issues/1576))
+
+
+
+### [gitea-5.0.18](https://github.com/truecharts/apps/compare/gitea-5.0.17...gitea-5.0.18) (2021-12-19)
+
+#### Chore
+
+- completely remove mountPath reference from GUI ([#1572](https://github.com/truecharts/apps/issues/1572))
+- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571))
+
+
+
+### [gitea-5.0.17](https://github.com/truecharts/apps/compare/gitea-5.0.16...gitea-5.0.17) (2021-12-18)
+
+#### Chore
+
+- cleanup questions by removing hidden dicts ([#1558](https://github.com/truecharts/apps/issues/1558))
+- App-Icon Organization ([#1539](https://github.com/truecharts/apps/issues/1539))
+
+
+
+### [gitea-5.0.16](https://github.com/truecharts/apps/compare/gitea-5.0.15...gitea-5.0.16) (2021-12-14)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535))
+
+
+
+### [gitea-5.0.15](https://github.com/truecharts/apps/compare/gitea-5.0.14...gitea-5.0.15) (2021-12-13)
+
+#### Chore
+
+- move incubator apps to stable and bump everything
+
+
+
+### [gitea-5.0.14](https://github.com/truecharts/apps/compare/gitea-5.0.13...gitea-5.0.14) (2021-12-11)
+
+#### Chore
+
+- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509))
+
+
+
+### [gitea-5.0.13](https://github.com/truecharts/apps/compare/gitea-5.0.12...gitea-5.0.13) (2021-12-11)
+
+#### Chore
+
+- update non-major docker ([#1507](https://github.com/truecharts/apps/issues/1507))
+
+
+
+### [gitea-5.0.12](https://github.com/truecharts/apps/compare/gitea-5.0.11...gitea-5.0.12) (2021-12-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481))
+
+
+
+### [gitea-5.0.11](https://github.com/truecharts/apps/compare/gitea-5.0.10...gitea-5.0.11) (2021-12-05)
+
+#### Chore
+
+- fix some remaining issues after refactor work
+
+
+
+### gitea-5.0.10 (2021-12-05)
+
+#### Chore
+
+- bump apps to generate security page
+- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448))
+- ensure container references are prefixed with v
+- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468))
+- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453))
+- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449))
+- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471))
+- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432))
+
+#### Fix
+
+- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428))
+
+
+
+### [gitea-5.0.9](https://github.com/truecharts/apps/compare/gitea-5.0.8...gitea-5.0.9) (2021-12-05)
+
+#### Chore
+
+- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468))
+
+
+
+### [gitea-5.0.8](https://github.com/truecharts/apps/compare/gitea-5.0.7...gitea-5.0.8) (2021-12-04)
+
+#### Chore
+
+- bump apps to generate security page
+
+
+
+### [gitea-5.0.7](https://github.com/truecharts/apps/compare/gitea-5.0.6...gitea-5.0.7) (2021-12-04)
+
+#### Chore
+
+- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453))
+
+
+
+### [gitea-5.0.6](https://github.com/truecharts/apps/compare/gitea-5.0.5...gitea-5.0.6) (2021-12-03)
+
+#### Chore
+
+- ensure container references are prefixed with v
+- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448))
+- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449))
+
+
+
+### [gitea-5.0.5](https://github.com/truecharts/apps/compare/gitea-5.0.4...gitea-5.0.5) (2021-11-30)
+
+#### Chore
+
+- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432))
+
+#### Fix
+
+- correct some ports mistakes ([#1416](https://github.com/truecharts/apps/issues/1416))
+- move conflicting ports to 10xxx range ([#1415](https://github.com/truecharts/apps/issues/1415))
+
+
+
+### [gitea-5.0.4](https://github.com/truecharts/apps/compare/gitea-5.0.3...gitea-5.0.4) (2021-11-23)
+
+#### Chore
+
+- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386))
+
+
+
+### [gitea-5.0.3](https://github.com/truecharts/apps/compare/gitea-5.0.2...gitea-5.0.3) (2021-11-22)
+
+#### Chore
+
+- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383))
+
+
+
+### [gitea-5.0.2](https://github.com/truecharts/apps/compare/gitea-5.0.1...gitea-5.0.2) (2021-11-16)
+
+#### Chore
+
+- update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345))
+
+
+
+### [gitea-5.0.1](https://github.com/truecharts/apps/compare/gitea-5.0.0...gitea-5.0.1) (2021-11-16)
+
+#### Chore
+
+- bump postgresql again
+
+
+
+### [gitea-5.0.0](https://github.com/truecharts/apps/compare/gitea-4.0.15...gitea-5.0.0) (2021-11-16)
+
+#### Chore
+
+- bump postgresql on some Apps
+
+
+
+### [gitea-4.0.15](https://github.com/truecharts/apps/compare/gitea-4.0.14...gitea-4.0.15) (2021-11-15)
+
+#### Chore
+
+- persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329))
+- update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338))
+
+
+
+### [gitea-4.0.14](https://github.com/truecharts/apps/compare/gitea-4.0.13...gitea-4.0.14) (2021-11-14)
+
+#### Chore
+
+- fixes around the GUI refactor ([#1316](https://github.com/truecharts/apps/issues/1316))
+- move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326))
+- clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322))
+- update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328))
+
+
+
+### [gitea-4.0.13](https://github.com/truecharts/apps/compare/gitea-4.0.12...gitea-4.0.13) (2021-11-12)
+
+#### Feat
+
+- move gitea to our own memcached chart ([#1313](https://github.com/truecharts/apps/issues/1313))
+
+#### Fix
+
+- Allow spaces in paths ([#1306](https://github.com/truecharts/apps/issues/1306))
+
+
+
+### [gitea-4.0.12](https://github.com/truecharts/apps/compare/gitea-4.0.11...gitea-4.0.12) (2021-11-09)
+
+#### Chore
+
+- update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297))
+
+
+
+### [gitea-4.0.11](https://github.com/truecharts/apps/compare/gitea-4.0.10...gitea-4.0.11) (2021-11-08)
+
+
+
+### [gitea-4.0.10](https://github.com/truecharts/apps/compare/gitea-4.0.9...gitea-4.0.10) (2021-11-08)
+
+#### Fix
+
+- Correctly enable ports by default on some more Apps
+
+
+
+### [gitea-4.0.9](https://github.com/truecharts/apps/compare/gitea-4.0.8...gitea-4.0.9) (2021-11-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295))
+
+
+
+### [gitea-4.0.8](https://github.com/truecharts/apps/compare/gitea-4.0.7...gitea-4.0.8) (2021-11-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291))
+
+#### Chore
+
+- Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289))
+
+#### Feat
+
+- Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290))
+
+
+
+### [gitea-4.0.7](https://github.com/truecharts/apps/compare/gitea-4.0.6...gitea-4.0.7) (2021-11-02)
+
+#### Chore
+
+- update non-major deps helm releases ([#1267](https://github.com/truecharts/apps/issues/1267))
+
+
+
+### [gitea-4.0.6](https://github.com/truecharts/apps/compare/gitea-4.0.5...gitea-4.0.6) (2021-11-01)
+
+#### Chore
+
+- update non-major deps helm releases ([#1264](https://github.com/truecharts/apps/issues/1264))
+
+
+
+### [gitea-4.0.5](https://github.com/truecharts/apps/compare/gitea-4.0.4...gitea-4.0.5) (2021-11-01)
+
+#### Chore
+
+- update non-major ([#1263](https://github.com/truecharts/apps/issues/1263))
+
+
+
+### [gitea-4.0.4](https://github.com/truecharts/apps/compare/gitea-4.0.3...gitea-4.0.4) (2021-10-26)
+
+#### Chore
+
+- update helm chart postgresql to v5.1.4 ([#1249](https://github.com/truecharts/apps/issues/1249))
+
+
+
+### [gitea-4.0.3](https://github.com/truecharts/apps/compare/gitea-4.0.2...gitea-4.0.3) (2021-10-26)
+
+#### Chore
+
+- update non-major deps helm releases ([#1247](https://github.com/truecharts/apps/issues/1247))
+
+
+
+### [gitea-4.0.2](https://github.com/truecharts/apps/compare/gitea-4.0.1...gitea-4.0.2) (2021-10-26)
+
+#### Chore
+
+- update non-major deps helm releases ([#1245](https://github.com/truecharts/apps/issues/1245))
+
+
+
+### [gitea-4.0.1](https://github.com/truecharts/apps/compare/gitea-4.0.0...gitea-4.0.1) (2021-10-26)
+
+#### Chore
+
+- update helm chart common to v8.3.15 ([#1240](https://github.com/truecharts/apps/issues/1240))
+
+
+
+### [gitea-4.0.0](https://github.com/truecharts/apps/compare/gitea-3.0.1...gitea-4.0.0) (2021-10-26)
+
+#### Chore
+
+- update helm chart postgresql to v5 ([#1234](https://github.com/truecharts/apps/issues/1234))
+- update non-major ([#1232](https://github.com/truecharts/apps/issues/1232))
+- update helm chart postgresql to v4.1.0 ([#1237](https://github.com/truecharts/apps/issues/1237))
+
+
+
+### [gitea-3.0.1](https://github.com/truecharts/apps/compare/gitea-3.0.0...gitea-3.0.1) (2021-10-26)
+
+#### Chore
+
+- update non-major deps helm releases
+
+
+
+### [gitea-3.0.0](https://github.com/truecharts/apps/compare/gitea-2.0.3...gitea-3.0.0) (2021-10-25)
+
+#### Chore
+
+- Adapt for TrueNAS SCALE RC1
+
+
+
+### [gitea-2.0.3](https://github.com/truecharts/apps/compare/gitea-2.0.2...gitea-2.0.3) (2021-10-20)
+
+#### Chore
+
+- bump apps, remove duplicates and move incubator to stable for RC1
+
+
+
+### [gitea-2.0.0](https://github.com/truecharts/apps/compare/gitea-1.0.17...gitea-2.0.0) (2021-10-20)
+
+#### Chore
+
+- update helm chart postgresql to v4 ([#1214](https://github.com/truecharts/apps/issues/1214))
+
+#### Fix
+
+- use correct PVC storageClass when using postgresql as a dependency on SCALE ([#1212](https://github.com/truecharts/apps/issues/1212))
+
+
+
+### [gitea-1.0.17](https://github.com/truecharts/apps/compare/gitea-1.0.16...gitea-1.0.17) (2021-10-20)
+
+#### Chore
+
+- bump versions to rerelease and fix icons
+
+
+
+### [gitea-1.0.16](https://github.com/truecharts/apps/compare/gitea-1.0.15...gitea-1.0.16) (2021-10-19)
+
+#### Chore
+
+- update helm chart common to v8.3.13 ([#1184](https://github.com/truecharts/apps/issues/1184))
+
+
+
+### [gitea-1.0.15](https://github.com/truecharts/apps/compare/gitea-1.0.14...gitea-1.0.15) (2021-10-19)
+
+#### Change
+
+- Project-Eclipse 3, Automatically generate item.yaml ([#1178](https://github.com/truecharts/apps/issues/1178))
+
+#### Chore
+
+- Project-Eclipse 5, move app-readme to automatic generation script ([#1181](https://github.com/truecharts/apps/issues/1181))
+- update helm chart memcached to v5.15.6 ([#1179](https://github.com/truecharts/apps/issues/1179))
+
+#### Feat
+
+- Project-Eclipse 4, Add App grading annotations to Chart.yaml ([#1180](https://github.com/truecharts/apps/issues/1180))
+
+#### Refactor
+
+- Project Eclipse Part 6, move questions.yaml to root App folder ([#1182](https://github.com/truecharts/apps/issues/1182))
+
+
+
+### [gitea-1.0.14](https://github.com/truecharts/apps/compare/gitea-1.0.13...gitea-1.0.14) (2021-10-19)
+
+#### Chore
+
+- Project-Eclipse part 2, adapting and cleaning changelog ([#1173](https://github.com/truecharts/apps/issues/1173))
+- update helm chart postgresql to v3.0.20 ([#1177](https://github.com/truecharts/apps/issues/1177))
+
+
+
+### [gitea-1.0.13](https://github.com/truecharts/apps/compare/gitea-1.0.12...gitea-1.0.13) (2021-10-19)
+
+#### Fix
+
+- fix previous SCALE bugfix not correctly being applied
+
+
+
+### [gitea-1.0.12](https://github.com/truecharts/apps/compare/gitea-1.0.11...gitea-1.0.12) (2021-10-19)
+
+#### Fix
+
+- Solve issues regarding ix_values.yaml not containing the image and tag definitions. ([#1176](https://github.com/truecharts/apps/issues/1176))
+
+
+
+### [gitea-1.0.11](https://github.com/truecharts/apps/compare/gitea-1.0.10...gitea-1.0.11) (2021-10-18)
+
+#### Refactor
+
+- Project Eclipse - part 1 - remove ix_values.yaml ([#1168](https://github.com/truecharts/apps/issues/1168))
+
+
+
+### [gitea-1.0.10](https://github.com/truecharts/apps/compare/gitea-1.0.9...gitea-1.0.10) (2021-10-17)
+
+#### Chore
+
+- update helm chart common to v8.3.10 ([#1160](https://github.com/truecharts/apps/issues/1160))
+
+#### Fix
+
+- force users using correct / prefix for mounPath ([#1156](https://github.com/truecharts/apps/issues/1156))
+
+
+
+### [gitea-1.0.9](https://github.com/truecharts/apps/compare/gitea-1.0.8...gitea-1.0.9) (2021-10-13)
+
+#### Chore
+
+- update non-major deps helm releases ([#1133](https://github.com/truecharts/apps/issues/1133))
+
+
+
+### [gitea-1.0.8](https://github.com/truecharts/apps/compare/gitea-1.0.7...gitea-1.0.8) (2021-10-12)
+
+#### Chore
+
+- update helm chart postgresql to v3.0.15 ([#1127](https://github.com/truecharts/apps/issues/1127))
+
+
+
+### [gitea-1.0.7](https://github.com/truecharts/apps/compare/gitea-1.0.6...gitea-1.0.7) (2021-10-12)
+
+#### Chore
+
+- update non-major deps helm releases ([#1126](https://github.com/truecharts/apps/issues/1126))
+
+
+
+### [gitea-1.0.6](https://github.com/truecharts/apps/compare/gitea-1.0.5...gitea-1.0.6) (2021-10-12)
+
+#### Chore
+
+- update non-major ([#1122](https://github.com/truecharts/apps/issues/1122))
+
+
+
+### [gitea-1.0.5](https://github.com/truecharts/apps/compare/gitea-1.0.4...gitea-1.0.5) (2021-10-12)
+
+#### Chore
+
+- update non-major deps helm releases ([#1123](https://github.com/truecharts/apps/issues/1123))
+
+
+
+### [gitea-1.0.4](https://github.com/truecharts/apps/compare/gitea-1.0.3...gitea-1.0.4) (2021-10-09)
+
+
+
+### [gitea-1.0.3](https://github.com/truecharts/apps/compare/gitea-1.0.2...gitea-1.0.3) (2021-10-05)
+
+#### Chore
+
+- update non-major deps helm releases ([#1099](https://github.com/truecharts/apps/issues/1099))
+
+
+
+### [gitea-1.0.2](https://github.com/truecharts/apps/compare/gitea-1.0.1...gitea-1.0.2) (2021-10-05)
+
+#### Chore
+
+- update non-major ([#1098](https://github.com/truecharts/apps/issues/1098))
+
+
+
+### [gitea-1.0.1](https://github.com/truecharts/apps/compare/gitea-1.0.0...gitea-1.0.1) (2021-10-01)
+
+
+
+### [gitea-1.0.0](https://github.com/truecharts/apps/compare/gitea-0.0.5...gitea-1.0.0) (2021-10-01)
+
+
+
+### [gitea-0.0.5](https://github.com/truecharts/apps/compare/gitea-0.0.4...gitea-0.0.5) (2021-10-01)
+
+
+
+### [gitea-0.0.4](https://github.com/truecharts/apps/compare/gitea-0.0.3...gitea-0.0.4) (2021-10-01)
+
+
+
+### [gitea-0.0.2](https://github.com/truecharts/apps/compare/gitea-0.0.1...gitea-0.0.2) (2021-10-01)
+
+
+
+### gitea-0.0.1 (2021-10-01)
diff --git a/stable/gitea/17.2.0/Chart.yaml b/stable/gitea/17.2.0/Chart.yaml
new file mode 100644
index 0000000..fbe0a33
--- /dev/null
+++ b/stable/gitea/17.2.0/Chart.yaml
@@ -0,0 +1,49 @@
+annotations:
+ max_scale_version: 23.10.2
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GIT
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 1.21.5
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+ - name: memcached
+ version: 11.1.18
+ repository: oci://tccr.io/truecharts
+ condition: memcached.enabled
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Self hosted GIT repositories
+home: https://truecharts.org/charts/stable/gitea
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+keywords:
+ - git
+ - issue tracker
+ - code review
+ - wiki
+ - gitea
+ - gogs
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: gitea
+sources:
+ - https://gitea.com/gitea/helm-chart
+ - https://github.com/go-gitea/gitea
+ - https://github.com/truecharts/charts/tree/master/charts/stable/gitea
+ - https://hub.docker.com/r/gitea/gitea
+type: application
+version: 17.2.0
diff --git a/stable/gitea/17.2.0/LICENSE b/stable/gitea/17.2.0/LICENSE
new file mode 100644
index 0000000..33a8cbb
--- /dev/null
+++ b/stable/gitea/17.2.0/LICENSE
@@ -0,0 +1,106 @@
+Business Source License 1.1
+
+Parameters
+
+Licensor: The TrueCharts Project, it's owner and it's contributors
+Licensed Work: The TrueCharts "Blocky" Helm Chart
+Additional Use Grant: You may use the licensed work in production, as long
+ as it is directly sourced from a TrueCharts provided
+ official repository, catalog or source. You may also make private
+ modification to the directly sourced licenced work,
+ when used in production.
+
+ The following cases are, due to their nature, also
+ defined as 'production use' and explicitly prohibited:
+ - Bundling, including or displaying the licensed work
+ with(in) another work intended for production use,
+ with the apparent intend of facilitating and/or
+ promoting production use by third parties in
+ violation of this license.
+
+Change Date: 2050-01-01
+
+Change License: 3-clause BSD license
+
+For information about alternative licensing arrangements for the Software,
+please contact: legal@truecharts.org
+
+Notice
+
+The Business Source License (this document, or the “License”) is not an Open
+Source license. However, the Licensed Work will eventually be made available
+under an Open Source License, as stated in this License.
+
+License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
+“Business Source License” is a trademark of MariaDB Corporation Ab.
+
+-----------------------------------------------------------------------------
+
+Business Source License 1.1
+
+Terms
+
+The Licensor hereby grants you the right to copy, modify, create derivative
+works, redistribute, and make non-production use of the Licensed Work. The
+Licensor may make an Additional Use Grant, above, permitting limited
+production use.
+
+Effective on the Change Date, or the fourth anniversary of the first publicly
+available distribution of a specific version of the Licensed Work under this
+License, whichever comes first, the Licensor hereby grants you rights under
+the terms of the Change License, and the rights granted in the paragraph
+above terminate.
+
+If your use of the Licensed Work does not comply with the requirements
+currently in effect as described in this License, you must purchase a
+commercial license from the Licensor, its affiliated entities, or authorized
+resellers, or you must refrain from using the Licensed Work.
+
+All copies of the original and modified Licensed Work, and derivative works
+of the Licensed Work, are subject to this License. This License applies
+separately for each version of the Licensed Work and the Change Date may vary
+for each version of the Licensed Work released by Licensor.
+
+You must conspicuously display this License on each original or modified copy
+of the Licensed Work. If you receive the Licensed Work in original or
+modified form from a third party, the terms and conditions set forth in this
+License apply to your use of that work.
+
+Any use of the Licensed Work in violation of this License will automatically
+terminate your rights under this License for the current and all other
+versions of the Licensed Work.
+
+This License does not grant you any right in any trademark or logo of
+Licensor or its affiliates (provided that you may use a trademark or logo of
+Licensor as expressly required by this License).
+
+TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
+AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
+EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
+TITLE.
+
+MariaDB hereby grants you permission to use this License’s text to license
+your works, and to refer to it using the trademark “Business Source License”,
+as long as you comply with the Covenants of Licensor below.
+
+Covenants of Licensor
+
+In consideration of the right to use this License’s text and the “Business
+Source License” name and trademark, Licensor covenants to MariaDB, and to all
+other recipients of the licensed work to be provided by Licensor:
+
+1. To specify as the Change License the GPL Version 2.0 or any later version,
+ or a license that is compatible with GPL Version 2.0 or a later version,
+ where “compatible” means that software provided under the Change License can
+ be included in a program with software provided under GPL Version 2.0 or a
+ later version. Licensor may specify additional Change Licenses without
+ limitation.
+
+2. To either: (a) specify an additional grant of rights to use that does not
+ impose any additional restriction on the right granted in this License, as
+ the Additional Use Grant; or (b) insert the text “None”.
+
+3. To specify a Change Date.
+
+4. Not to modify this License in any other way.
diff --git a/stable/gitea/17.2.0/README.md b/stable/gitea/17.2.0/README.md
new file mode 100644
index 0000000..1d7e1d4
--- /dev/null
+++ b/stable/gitea/17.2.0/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/gitea)
+
+**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/gitea/17.2.0/app-readme.md b/stable/gitea/17.2.0/app-readme.md
new file mode 100644
index 0000000..e8603ad
--- /dev/null
+++ b/stable/gitea/17.2.0/app-readme.md
@@ -0,0 +1,8 @@
+Self hosted GIT repositories
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea)
+
+---
+
+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/gitea/17.2.0/charts/common-17.4.2.tgz b/stable/gitea/17.2.0/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/gitea/17.2.0/charts/common-17.4.2.tgz differ
diff --git a/stable/gitea/17.2.0/charts/memcached-11.1.18.tgz b/stable/gitea/17.2.0/charts/memcached-11.1.18.tgz
new file mode 100644
index 0000000..c0ed775
Binary files /dev/null and b/stable/gitea/17.2.0/charts/memcached-11.1.18.tgz differ
diff --git a/stable/gitea/17.2.0/ix_values.yaml b/stable/gitea/17.2.0/ix_values.yaml
new file mode 100644
index 0000000..735fe1b
--- /dev/null
+++ b/stable/gitea/17.2.0/ix_values.yaml
@@ -0,0 +1,132 @@
+image:
+ repository: gitea/gitea
+ tag: 1.21.5-rootless@sha256:874a8d88bb65f90c33fcafe4efe2de17039de1347c00f284e6f2a883a7caa55f
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10037
+ targetPort: 3000
+ ssh:
+ enabled: true
+ ports:
+ ssh:
+ enabled: true
+ port: 2222
+ targetPort: 2222
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ targetSelectAll: true
+ varlib:
+ enabled: true
+ mountPath: "/var/lib/gitea"
+ type: emptyDir
+# Configure commit/action signing prerequisites
+signing:
+ enabled: true
+ gpgHome: /data/git/.gnupg
+admin:
+ username: giteaadmin
+ password: r8sA8CPHD9!bt6d
+ email: "gitea@local.domain"
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: main
+ path: /metrics
+ldap:
+ enabled: false
+ # name:
+ # securityProtocol:
+ # host:
+ # port:
+ # userSearchBase:
+ # userFilter:
+ # adminFilter:
+ # emailAttribute:
+ # bindDn:
+ # bindPassword:
+ # usernameAttribute:
+ # sshPublicKeyAttribute:
+oauth:
+ enabled: false
+ # name:
+ # provider:
+ # key:
+ # secret:
+ # autoDiscoverUrl:
+ # useCustomUrls:
+ # customAuthUrl:
+ # customTokenUrl:
+ # customProfileUrl:
+ # customEmailUrl:
+config:
+ APP_NAME: "Gitea: Git with a cup of tea"
+ RUN_MODE: dev
+ ALLOWED_HOST_LIST: "127.0.0.1"
+ nodeIP: 127.0.0.1
+customConfig: []
+# - name: test
+# keys:
+# - name: testkey
+# value: testvalue
+
+# Enabled postgres
+cnpg:
+ main:
+ enabled: true
+ user: gitea
+ database: gitea
+# -- memcached dependency settings
+memcached:
+ enabled: true
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ runAsUser: 1000
+ runAsGroup: 1000
+ fsGroup: 1000
+workload:
+ main:
+ podSpec:
+ initContainers:
+ 1-init-directories:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/init_directory_structure.sh"
+ securityContext:
+ runAsUser: 0
+ runAsNonRoot: false
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ 2-configure-gitea:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/configure_gitea.sh"
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ containers:
+ main:
+ probes:
+ liveness:
+ type: tcp
+ readiness:
+ type: tcp
+ startup:
+ type: tcp
+ envFrom:
+ - configMapRef:
+ name: gitea-env
diff --git a/stable/gitea/17.2.0/questions.yaml b/stable/gitea/17.2.0/questions.yaml
new file mode 100644
index 0000000..0a12512
--- /dev/null
+++ b/stable/gitea/17.2.0/questions.yaml
@@ -0,0 +1,3486 @@
+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: 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: admin
+ group: "App Configuration"
+ label: "Admin Credentials"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: "username"
+ schema:
+ type: string
+ valid_chars: '^(?!^admin$).*$'
+ required: true
+ - variable: password
+ label: "password"
+ schema:
+ type: string
+ required: true
+ private: true
+ min_length: 8
+ - variable: email
+ label: "email"
+ schema:
+ type: string
+ required: true
+ - variable: config
+ group: "App Configuration"
+ label: "Admin Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: APP_NAME
+ label: "APP_NAME"
+ schema:
+ type: string
+ default: "Gitea"
+ required: true
+ - variable: RUN_MODE
+ label: "RUN_MODE"
+ schema:
+ type: string
+ default: "prod"
+ enum:
+ - value: "prod"
+ description: "Production"
+ - value: "dev"
+ description: "Development"
+ - value: "test"
+ description: "Testing"
+ - variable: ALLOWED_HOST_LIST
+ label: "ALLOWED_HOST_LIST"
+ schema:
+ type: string
+ default: "127.0.0.1"
+ required: true
+ - variable: nodeIP
+ label: Node IP
+ description: Used to generate configuration, when installed without ingress
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/nodeIP"
+ - variable: customConfig
+ group: "App Configuration"
+ label: "Custom Configuration parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ # Do not fix this typo, it will break
+ # current installations
+ - variable: catagoryItem
+ label: "Category"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Config Category Name"
+ schema:
+ type: string
+ required: true
+ - variable: keys
+ label: "Configuration Parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: configItem
+ label: "parameter"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Parameter Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Parameter Value"
+ schema:
+ type: string
+ required: true
+ - 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: 10037
+ required: true
+ - variable: ssh
+ label: "SSH Service"
+ description: "The SSH service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+
+ - 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: ssh
+ label: "SSH 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: 2222
+ 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 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: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ # 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: 1000
+ - 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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ default: false
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: scheduledBackups
+ label: ScheduledBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backupschedule
+ label: BackupSchedule
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: "daily-backup"
+ required: true
+ - variable: schedule
+ label: schedule
+ schema:
+ type: string
+ required: true
+ default: "0 0 0 * * *"
+ - variable: backupOwnerReference
+ label: backupOwnerReference
+ schema:
+ type: string
+ required: true
+ default: "self"
+ - variable: immediate
+ label: immediate
+ schema:
+ type: boolean
+ default: false
+ - variable: suspend
+ label: suspend
+ schema:
+ type: boolean
+ default: false
+ - variable: manualBackups
+ label: manualBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backup
+ label: Backup
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+
+# - variable: 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/gitea/17.2.0/templates/NOTES.txt b/stable/gitea/17.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/gitea/17.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/gitea/17.2.0/templates/_configmap.tpl b/stable/gitea/17.2.0/templates/_configmap.tpl
new file mode 100644
index 0000000..7605060
--- /dev/null
+++ b/stable/gitea/17.2.0/templates/_configmap.tpl
@@ -0,0 +1,15 @@
+{{/* Define the configmap */}}
+{{- define "gitea.configmap" -}}
+enabled: true
+data:
+ GITEA_APP_INI: "/data/gitea/conf/app.ini"
+ GITEA_CUSTOM: "/data/gitea"
+ GITEA_WORK_DIR: "/data"
+ GITEA_TEMP: "/tmp/gitea"
+ GITEA_ADMIN_USERNAME: {{ .Values.admin.username | quote }}
+ GITEA_ADMIN_PASSWORD: {{ .Values.admin.password | quote }}
+ SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }}
+ SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }}
+ TMPDIR: "/tmp/gitea"
+ GNUPGHOME: "/data/git/.gnupg"
+{{- end -}}
diff --git a/stable/gitea/17.2.0/templates/_secrets.tpl b/stable/gitea/17.2.0/templates/_secrets.tpl
new file mode 100644
index 0000000..215287c
--- /dev/null
+++ b/stable/gitea/17.2.0/templates/_secrets.tpl
@@ -0,0 +1,233 @@
+{{/* Define the secrets */}}
+{{- define "gitea.secrets" -}}
+
+{{ $DOMAIN := .Values.config.nodeIP | quote -}}
+{{ $URL := (printf "http://%s:%v/" .Values.config.nodeIP .Values.service.main.ports.main.port) }}
+{{- $pgHost := printf "%v-cnpg-main-rw" (include "tc.v1.common.lib.chart.names.fullname" $) -}}
+
+{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}}
+ {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}}
+ {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}}
+{{- end -}}
+
+secret:
+ enabled: true
+ data:
+ app.ini: |-
+ APP_NAME = {{ .Values.config.APP_NAME }}
+ RUN_MODE = {{ .Values.config.RUN_MODE }}
+
+ [cache]
+ ADAPTER = memcache
+ ENABLED = true
+ HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "cache" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [database]
+ DB_TYPE = postgres
+ HOST = {{ printf "%v:5432" $pgHost }}
+ NAME = {{ .Values.cnpg.main.database }}
+ PASSWD = {{ .Values.cnpg.main.creds.password }}
+ USER = {{ .Values.cnpg.main.user }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "database" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [metrics]
+ ENABLED = {{ .Values.metrics.main.enabled }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "metrics" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [repository]
+ ROOT = /data/git/gitea-repositories
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "repository" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+
+ [security]
+ INSTALL_LOCK = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "security" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [webhook]
+ ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }}
+
+ [server]
+ APP_DATA_PATH = /data
+ DOMAIN = {{ $DOMAIN }}
+ ENABLE_PPROF = false
+ HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }}
+ PROTOCOL = http
+ ROOT_URL = {{ $URL }}
+ SSH_DOMAIN = {{ $DOMAIN }}
+ SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }}
+ SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }}
+ START_SSH_SERVER = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "server" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }}
+ [{{ $catvalue.name }}]
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+init:
+ enabled: true
+ data:
+ init_directory_structure.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ {{- if .Values.initPreScript }}
+ # BEGIN: initPreScript
+ {{- with .Values.initPreScript -}}
+ {{ . | nindent 4}}
+ {{- end -}}
+ # END: initPreScript
+ {{- end }}
+
+ set -x
+
+ mkdir -p /data/git/.ssh
+ chmod -R 700 /data/git/.ssh
+ [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf
+
+ # prepare temp directory structure
+ mkdir -p "${GITEA_TEMP}"
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "${GITEA_TEMP}"
+ chmod ug+rwx "${GITEA_TEMP}"
+
+ # Copy config file to writable volume
+ cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/data"
+ chmod a+rwx /data/gitea/conf/app.ini
+
+ # Patch dockercontainer for dynamic users
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/var/lib/gitea"
+
+ configure_gitea.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+
+ # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de
+ function test_db_connection() {
+ local RETRY=0
+ local MAX=30
+
+ echo 'Wait for database to become avialable...'
+ until [ "${RETRY}" -ge "${MAX}" ]; do
+ nc -vz -w2 {{ $pgHost }} 5432 && break
+ RETRY=$[${RETRY}+1]
+ echo "...not ready yet (${RETRY}/${MAX})"
+ done
+
+ if [ "${RETRY}" -ge "${MAX}" ]; then
+ echo "Database not reachable after '${MAX}' attempts!"
+ exit 1
+ fi
+ }
+
+ test_db_connection
+
+
+ echo '==== BEGIN GITEA MIGRATION ===='
+
+ gitea migrate
+
+ echo '==== BEGIN GITEA CONFIGURATION ===='
+
+ {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }}
+ function configure_admin_user() {
+ local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}")
+ if [[ -z "${ACCOUNT_ID}" ]]; then
+ echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..."
+ gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false
+ echo '...created.'
+ else
+ echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..."
+ gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}"
+ echo '...password sync done.'
+ fi
+ }
+
+ configure_admin_user
+ {{- end }}
+
+ {{- if .Values.ldap.enabled }}
+ function configure_ldap() {
+ local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }}
+ local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${GITEA_AUTH_ID}" ]]; then
+ echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..."
+ gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_ldap
+ {{- end }}
+
+ {{- if .Values.oauth.enabled }}
+ function configure_oauth() {
+ local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }}
+ local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${AUTH_ID}" ]]; then
+ echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..."
+ gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_oauth
+ {{- end }}
+
+ echo '==== END GITEA CONFIGURATION ===='
+
+{{- end -}}
diff --git a/stable/gitea/17.2.0/templates/common.yaml b/stable/gitea/17.2.0/templates/common.yaml
new file mode 100644
index 0000000..ebc9e98
--- /dev/null
+++ b/stable/gitea/17.2.0/templates/common.yaml
@@ -0,0 +1,52 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render secrets for gitea */}}
+{{- $secrets := include "gitea.secrets" . | fromYaml -}}
+{{- if $secrets -}}
+ {{- $_ := mustMergeOverwrite .Values.secret $secrets -}}
+{{- end -}}
+
+{{/* Render configmap for gitea */}}
+{{- $configmap := include "gitea.configmap" . | fromYaml -}}
+{{- if $configmap -}}
+ {{- $_ := set .Values.configmap "gitea-env" $configmap -}}
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.initvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: init
+defaultMode: "0777"
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/ini
+ 1-init-directories:
+ mountPath: "/usr/sbin"
+ 2-configure-gitea:
+ mountPath: "/usr/sbin"
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.configvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: secret
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/config
+ 1-init-directories:
+ mountPath: /etc/gitea/conf
+{{- end -}}
+
+{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}}
+{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}}
+
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/gitea/17.2.0/values.yaml b/stable/gitea/17.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/gitea/17.3.0/.helmignore b/stable/gitea/17.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/gitea/17.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/gitea/17.3.0/CHANGELOG.md b/stable/gitea/17.3.0/CHANGELOG.md
new file mode 100644
index 0000000..5be9b2d
--- /dev/null
+++ b/stable/gitea/17.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+## [gitea-17.1.18](https://github.com/truecharts/charts/compare/gitea-17.1.17...gitea-17.1.18) (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))
+
+
+## [gitea-17.1.17](https://github.com/truecharts/charts/compare/gitea-17.1.16...gitea-17.1.17) (2024-02-02)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.5[@874a8d8](https://github.com/874a8d8) by renovate ([#17787](https://github.com/truecharts/charts/issues/17787))
+
+
+## [gitea-17.1.16](https://github.com/truecharts/charts/compare/gitea-17.1.15...gitea-17.1.16) (2024-01-27)
+
+### Chore
+
+
+
+- update helm general non-major by renovate ([#17525](https://github.com/truecharts/charts/issues/17525))
+
+
+## [gitea-17.1.15](https://github.com/truecharts/charts/compare/gitea-17.1.14...gitea-17.1.15) (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))
+
+
+## [gitea-17.1.14](https://github.com/truecharts/charts/compare/gitea-17.1.13...gitea-17.1.14) (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))
+
+
+## [gitea-17.1.13](https://github.com/truecharts/charts/compare/gitea-17.1.12...gitea-17.1.13) (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))
+
+
+## [gitea-17.1.12](https://github.com/truecharts/charts/compare/gitea-17.1.11...gitea-17.1.12) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [gitea-17.1.11](https://github.com/truecharts/charts/compare/gitea-17.1.10...gitea-17.1.11) (2024-01-21)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.4[@600f1f1](https://github.com/600f1f1) by renovate ([#17304](https://github.com/truecharts/charts/issues/17304))
+
+
+
+
+## [gitea-17.1.10](https://github.com/truecharts/charts/compare/gitea-17.1.9...gitea-17.1.10) (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))
+
+
+## [gitea-17.1.9](https://github.com/truecharts/charts/compare/gitea-17.1.8...gitea-17.1.9) (2024-01-02)
diff --git a/stable/gitea/17.3.0/Chart.yaml b/stable/gitea/17.3.0/Chart.yaml
new file mode 100644
index 0000000..d53ba28
--- /dev/null
+++ b/stable/gitea/17.3.0/Chart.yaml
@@ -0,0 +1,49 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GIT
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 1.21.5
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+ - name: memcached
+ version: 11.2.1
+ repository: oci://tccr.io/truecharts
+ condition: memcached.enabled
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Self hosted GIT repositories
+home: https://truecharts.org/charts/stable/gitea
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+keywords:
+ - git
+ - issue tracker
+ - code review
+ - wiki
+ - gitea
+ - gogs
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: gitea
+sources:
+ - https://gitea.com/gitea/helm-chart
+ - https://github.com/go-gitea/gitea
+ - https://github.com/truecharts/charts/tree/master/charts/stable/gitea
+ - https://hub.docker.com/r/gitea/gitea
+type: application
+version: 17.3.0
diff --git a/stable/gitea/17.3.0/README.md b/stable/gitea/17.3.0/README.md
new file mode 100644
index 0000000..1d7e1d4
--- /dev/null
+++ b/stable/gitea/17.3.0/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/gitea)
+
+**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/gitea/17.3.0/app-readme.md b/stable/gitea/17.3.0/app-readme.md
new file mode 100644
index 0000000..e8603ad
--- /dev/null
+++ b/stable/gitea/17.3.0/app-readme.md
@@ -0,0 +1,8 @@
+Self hosted GIT repositories
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea)
+
+---
+
+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/gitea/17.3.0/charts/common-17.4.2.tgz b/stable/gitea/17.3.0/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/gitea/17.3.0/charts/common-17.4.2.tgz differ
diff --git a/stable/gitea/17.3.0/charts/memcached-11.2.1.tgz b/stable/gitea/17.3.0/charts/memcached-11.2.1.tgz
new file mode 100644
index 0000000..c0a2269
Binary files /dev/null and b/stable/gitea/17.3.0/charts/memcached-11.2.1.tgz differ
diff --git a/stable/gitea/17.3.0/ix_values.yaml b/stable/gitea/17.3.0/ix_values.yaml
new file mode 100644
index 0000000..735fe1b
--- /dev/null
+++ b/stable/gitea/17.3.0/ix_values.yaml
@@ -0,0 +1,132 @@
+image:
+ repository: gitea/gitea
+ tag: 1.21.5-rootless@sha256:874a8d88bb65f90c33fcafe4efe2de17039de1347c00f284e6f2a883a7caa55f
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10037
+ targetPort: 3000
+ ssh:
+ enabled: true
+ ports:
+ ssh:
+ enabled: true
+ port: 2222
+ targetPort: 2222
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ targetSelectAll: true
+ varlib:
+ enabled: true
+ mountPath: "/var/lib/gitea"
+ type: emptyDir
+# Configure commit/action signing prerequisites
+signing:
+ enabled: true
+ gpgHome: /data/git/.gnupg
+admin:
+ username: giteaadmin
+ password: r8sA8CPHD9!bt6d
+ email: "gitea@local.domain"
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: main
+ path: /metrics
+ldap:
+ enabled: false
+ # name:
+ # securityProtocol:
+ # host:
+ # port:
+ # userSearchBase:
+ # userFilter:
+ # adminFilter:
+ # emailAttribute:
+ # bindDn:
+ # bindPassword:
+ # usernameAttribute:
+ # sshPublicKeyAttribute:
+oauth:
+ enabled: false
+ # name:
+ # provider:
+ # key:
+ # secret:
+ # autoDiscoverUrl:
+ # useCustomUrls:
+ # customAuthUrl:
+ # customTokenUrl:
+ # customProfileUrl:
+ # customEmailUrl:
+config:
+ APP_NAME: "Gitea: Git with a cup of tea"
+ RUN_MODE: dev
+ ALLOWED_HOST_LIST: "127.0.0.1"
+ nodeIP: 127.0.0.1
+customConfig: []
+# - name: test
+# keys:
+# - name: testkey
+# value: testvalue
+
+# Enabled postgres
+cnpg:
+ main:
+ enabled: true
+ user: gitea
+ database: gitea
+# -- memcached dependency settings
+memcached:
+ enabled: true
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ runAsUser: 1000
+ runAsGroup: 1000
+ fsGroup: 1000
+workload:
+ main:
+ podSpec:
+ initContainers:
+ 1-init-directories:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/init_directory_structure.sh"
+ securityContext:
+ runAsUser: 0
+ runAsNonRoot: false
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ 2-configure-gitea:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/configure_gitea.sh"
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ containers:
+ main:
+ probes:
+ liveness:
+ type: tcp
+ readiness:
+ type: tcp
+ startup:
+ type: tcp
+ envFrom:
+ - configMapRef:
+ name: gitea-env
diff --git a/stable/gitea/17.3.0/questions.yaml b/stable/gitea/17.3.0/questions.yaml
new file mode 100644
index 0000000..0a12512
--- /dev/null
+++ b/stable/gitea/17.3.0/questions.yaml
@@ -0,0 +1,3486 @@
+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: 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: admin
+ group: "App Configuration"
+ label: "Admin Credentials"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: "username"
+ schema:
+ type: string
+ valid_chars: '^(?!^admin$).*$'
+ required: true
+ - variable: password
+ label: "password"
+ schema:
+ type: string
+ required: true
+ private: true
+ min_length: 8
+ - variable: email
+ label: "email"
+ schema:
+ type: string
+ required: true
+ - variable: config
+ group: "App Configuration"
+ label: "Admin Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: APP_NAME
+ label: "APP_NAME"
+ schema:
+ type: string
+ default: "Gitea"
+ required: true
+ - variable: RUN_MODE
+ label: "RUN_MODE"
+ schema:
+ type: string
+ default: "prod"
+ enum:
+ - value: "prod"
+ description: "Production"
+ - value: "dev"
+ description: "Development"
+ - value: "test"
+ description: "Testing"
+ - variable: ALLOWED_HOST_LIST
+ label: "ALLOWED_HOST_LIST"
+ schema:
+ type: string
+ default: "127.0.0.1"
+ required: true
+ - variable: nodeIP
+ label: Node IP
+ description: Used to generate configuration, when installed without ingress
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/nodeIP"
+ - variable: customConfig
+ group: "App Configuration"
+ label: "Custom Configuration parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ # Do not fix this typo, it will break
+ # current installations
+ - variable: catagoryItem
+ label: "Category"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Config Category Name"
+ schema:
+ type: string
+ required: true
+ - variable: keys
+ label: "Configuration Parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: configItem
+ label: "parameter"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Parameter Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Parameter Value"
+ schema:
+ type: string
+ required: true
+ - 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: 10037
+ required: true
+ - variable: ssh
+ label: "SSH Service"
+ description: "The SSH service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+
+ - 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: ssh
+ label: "SSH 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: 2222
+ 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 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: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ # 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: 1000
+ - 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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ default: false
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: scheduledBackups
+ label: ScheduledBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backupschedule
+ label: BackupSchedule
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: "daily-backup"
+ required: true
+ - variable: schedule
+ label: schedule
+ schema:
+ type: string
+ required: true
+ default: "0 0 0 * * *"
+ - variable: backupOwnerReference
+ label: backupOwnerReference
+ schema:
+ type: string
+ required: true
+ default: "self"
+ - variable: immediate
+ label: immediate
+ schema:
+ type: boolean
+ default: false
+ - variable: suspend
+ label: suspend
+ schema:
+ type: boolean
+ default: false
+ - variable: manualBackups
+ label: manualBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backup
+ label: Backup
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+
+# - variable: 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/gitea/17.3.0/templates/NOTES.txt b/stable/gitea/17.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/gitea/17.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/gitea/17.3.0/templates/_configmap.tpl b/stable/gitea/17.3.0/templates/_configmap.tpl
new file mode 100644
index 0000000..7605060
--- /dev/null
+++ b/stable/gitea/17.3.0/templates/_configmap.tpl
@@ -0,0 +1,15 @@
+{{/* Define the configmap */}}
+{{- define "gitea.configmap" -}}
+enabled: true
+data:
+ GITEA_APP_INI: "/data/gitea/conf/app.ini"
+ GITEA_CUSTOM: "/data/gitea"
+ GITEA_WORK_DIR: "/data"
+ GITEA_TEMP: "/tmp/gitea"
+ GITEA_ADMIN_USERNAME: {{ .Values.admin.username | quote }}
+ GITEA_ADMIN_PASSWORD: {{ .Values.admin.password | quote }}
+ SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }}
+ SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }}
+ TMPDIR: "/tmp/gitea"
+ GNUPGHOME: "/data/git/.gnupg"
+{{- end -}}
diff --git a/stable/gitea/17.3.0/templates/_secrets.tpl b/stable/gitea/17.3.0/templates/_secrets.tpl
new file mode 100644
index 0000000..215287c
--- /dev/null
+++ b/stable/gitea/17.3.0/templates/_secrets.tpl
@@ -0,0 +1,233 @@
+{{/* Define the secrets */}}
+{{- define "gitea.secrets" -}}
+
+{{ $DOMAIN := .Values.config.nodeIP | quote -}}
+{{ $URL := (printf "http://%s:%v/" .Values.config.nodeIP .Values.service.main.ports.main.port) }}
+{{- $pgHost := printf "%v-cnpg-main-rw" (include "tc.v1.common.lib.chart.names.fullname" $) -}}
+
+{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}}
+ {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}}
+ {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}}
+{{- end -}}
+
+secret:
+ enabled: true
+ data:
+ app.ini: |-
+ APP_NAME = {{ .Values.config.APP_NAME }}
+ RUN_MODE = {{ .Values.config.RUN_MODE }}
+
+ [cache]
+ ADAPTER = memcache
+ ENABLED = true
+ HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "cache" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [database]
+ DB_TYPE = postgres
+ HOST = {{ printf "%v:5432" $pgHost }}
+ NAME = {{ .Values.cnpg.main.database }}
+ PASSWD = {{ .Values.cnpg.main.creds.password }}
+ USER = {{ .Values.cnpg.main.user }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "database" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [metrics]
+ ENABLED = {{ .Values.metrics.main.enabled }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "metrics" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [repository]
+ ROOT = /data/git/gitea-repositories
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "repository" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+
+ [security]
+ INSTALL_LOCK = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "security" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [webhook]
+ ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }}
+
+ [server]
+ APP_DATA_PATH = /data
+ DOMAIN = {{ $DOMAIN }}
+ ENABLE_PPROF = false
+ HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }}
+ PROTOCOL = http
+ ROOT_URL = {{ $URL }}
+ SSH_DOMAIN = {{ $DOMAIN }}
+ SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }}
+ SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }}
+ START_SSH_SERVER = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "server" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }}
+ [{{ $catvalue.name }}]
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+init:
+ enabled: true
+ data:
+ init_directory_structure.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ {{- if .Values.initPreScript }}
+ # BEGIN: initPreScript
+ {{- with .Values.initPreScript -}}
+ {{ . | nindent 4}}
+ {{- end -}}
+ # END: initPreScript
+ {{- end }}
+
+ set -x
+
+ mkdir -p /data/git/.ssh
+ chmod -R 700 /data/git/.ssh
+ [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf
+
+ # prepare temp directory structure
+ mkdir -p "${GITEA_TEMP}"
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "${GITEA_TEMP}"
+ chmod ug+rwx "${GITEA_TEMP}"
+
+ # Copy config file to writable volume
+ cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/data"
+ chmod a+rwx /data/gitea/conf/app.ini
+
+ # Patch dockercontainer for dynamic users
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/var/lib/gitea"
+
+ configure_gitea.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+
+ # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de
+ function test_db_connection() {
+ local RETRY=0
+ local MAX=30
+
+ echo 'Wait for database to become avialable...'
+ until [ "${RETRY}" -ge "${MAX}" ]; do
+ nc -vz -w2 {{ $pgHost }} 5432 && break
+ RETRY=$[${RETRY}+1]
+ echo "...not ready yet (${RETRY}/${MAX})"
+ done
+
+ if [ "${RETRY}" -ge "${MAX}" ]; then
+ echo "Database not reachable after '${MAX}' attempts!"
+ exit 1
+ fi
+ }
+
+ test_db_connection
+
+
+ echo '==== BEGIN GITEA MIGRATION ===='
+
+ gitea migrate
+
+ echo '==== BEGIN GITEA CONFIGURATION ===='
+
+ {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }}
+ function configure_admin_user() {
+ local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}")
+ if [[ -z "${ACCOUNT_ID}" ]]; then
+ echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..."
+ gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false
+ echo '...created.'
+ else
+ echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..."
+ gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}"
+ echo '...password sync done.'
+ fi
+ }
+
+ configure_admin_user
+ {{- end }}
+
+ {{- if .Values.ldap.enabled }}
+ function configure_ldap() {
+ local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }}
+ local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${GITEA_AUTH_ID}" ]]; then
+ echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..."
+ gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_ldap
+ {{- end }}
+
+ {{- if .Values.oauth.enabled }}
+ function configure_oauth() {
+ local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }}
+ local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${AUTH_ID}" ]]; then
+ echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..."
+ gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_oauth
+ {{- end }}
+
+ echo '==== END GITEA CONFIGURATION ===='
+
+{{- end -}}
diff --git a/stable/gitea/17.3.0/templates/common.yaml b/stable/gitea/17.3.0/templates/common.yaml
new file mode 100644
index 0000000..ebc9e98
--- /dev/null
+++ b/stable/gitea/17.3.0/templates/common.yaml
@@ -0,0 +1,52 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render secrets for gitea */}}
+{{- $secrets := include "gitea.secrets" . | fromYaml -}}
+{{- if $secrets -}}
+ {{- $_ := mustMergeOverwrite .Values.secret $secrets -}}
+{{- end -}}
+
+{{/* Render configmap for gitea */}}
+{{- $configmap := include "gitea.configmap" . | fromYaml -}}
+{{- if $configmap -}}
+ {{- $_ := set .Values.configmap "gitea-env" $configmap -}}
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.initvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: init
+defaultMode: "0777"
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/ini
+ 1-init-directories:
+ mountPath: "/usr/sbin"
+ 2-configure-gitea:
+ mountPath: "/usr/sbin"
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.configvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: secret
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/config
+ 1-init-directories:
+ mountPath: /etc/gitea/conf
+{{- end -}}
+
+{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}}
+{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}}
+
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/gitea/17.3.0/values.yaml b/stable/gitea/17.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/gitea/17.4.0/.helmignore b/stable/gitea/17.4.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/gitea/17.4.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/gitea/17.4.0/CHANGELOG.md b/stable/gitea/17.4.0/CHANGELOG.md
new file mode 100644
index 0000000..db9fc20
--- /dev/null
+++ b/stable/gitea/17.4.0/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+## [gitea-17.1.18](https://github.com/truecharts/charts/compare/gitea-17.1.17...gitea-17.1.18) (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))
+
+
+## [gitea-17.1.17](https://github.com/truecharts/charts/compare/gitea-17.1.16...gitea-17.1.17) (2024-02-02)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.5[@874a8d8](https://github.com/874a8d8) by renovate ([#17787](https://github.com/truecharts/charts/issues/17787))
+
+
+## [gitea-17.1.16](https://github.com/truecharts/charts/compare/gitea-17.1.15...gitea-17.1.16) (2024-01-27)
+
+### Chore
+
+
+
+- update helm general non-major by renovate ([#17525](https://github.com/truecharts/charts/issues/17525))
+
+
+## [gitea-17.1.15](https://github.com/truecharts/charts/compare/gitea-17.1.14...gitea-17.1.15) (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))
+
+
+## [gitea-17.1.14](https://github.com/truecharts/charts/compare/gitea-17.1.13...gitea-17.1.14) (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))
+
+
+## [gitea-17.1.13](https://github.com/truecharts/charts/compare/gitea-17.1.12...gitea-17.1.13) (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))
+
+
+## [gitea-17.1.12](https://github.com/truecharts/charts/compare/gitea-17.1.11...gitea-17.1.12) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [gitea-17.1.11](https://github.com/truecharts/charts/compare/gitea-17.1.10...gitea-17.1.11) (2024-01-21)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.4[@600f1f1](https://github.com/600f1f1) by renovate ([#17304](https://github.com/truecharts/charts/issues/17304))
+
+
+
+
+## [gitea-17.1.10](https://github.com/truecharts/charts/compare/gitea-17.1.9...gitea-17.1.10) (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))
+
+
+## [gitea-17.1.9](https://github.com/truecharts/charts/compare/gitea-17.1.8...gitea-17.1.9) (2024-01-02)
\ No newline at end of file
diff --git a/stable/gitea/17.4.0/Chart.yaml b/stable/gitea/17.4.0/Chart.yaml
new file mode 100644
index 0000000..57d5fce
--- /dev/null
+++ b/stable/gitea/17.4.0/Chart.yaml
@@ -0,0 +1,49 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GIT
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.12"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 1.21.5
+dependencies:
+ - name: common
+ version: 17.5.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+ - name: memcached
+ version: 11.2.1
+ repository: oci://tccr.io/truecharts
+ condition: memcached.enabled
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Self hosted GIT repositories
+home: https://truecharts.org/charts/stable/gitea
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+keywords:
+ - git
+ - issue tracker
+ - code review
+ - wiki
+ - gitea
+ - gogs
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: gitea
+sources:
+ - https://gitea.com/gitea/helm-chart
+ - https://github.com/go-gitea/gitea
+ - https://github.com/truecharts/charts/tree/master/charts/stable/gitea
+ - https://hub.docker.com/r/gitea/gitea
+type: application
+version: 17.4.0
diff --git a/stable/gitea/17.4.0/README.md b/stable/gitea/17.4.0/README.md
new file mode 100644
index 0000000..1d7e1d4
--- /dev/null
+++ b/stable/gitea/17.4.0/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/gitea)
+
+**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/gitea/17.4.0/app-readme.md b/stable/gitea/17.4.0/app-readme.md
new file mode 100644
index 0000000..e8603ad
--- /dev/null
+++ b/stable/gitea/17.4.0/app-readme.md
@@ -0,0 +1,8 @@
+Self hosted GIT repositories
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea)
+
+---
+
+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/gitea/17.4.0/charts/common-17.5.0.tgz b/stable/gitea/17.4.0/charts/common-17.5.0.tgz
new file mode 100644
index 0000000..3a55348
Binary files /dev/null and b/stable/gitea/17.4.0/charts/common-17.5.0.tgz differ
diff --git a/stable/gitea/17.4.0/charts/memcached-11.2.1.tgz b/stable/gitea/17.4.0/charts/memcached-11.2.1.tgz
new file mode 100644
index 0000000..0f4af63
Binary files /dev/null and b/stable/gitea/17.4.0/charts/memcached-11.2.1.tgz differ
diff --git a/stable/gitea/17.4.0/ix_values.yaml b/stable/gitea/17.4.0/ix_values.yaml
new file mode 100644
index 0000000..735fe1b
--- /dev/null
+++ b/stable/gitea/17.4.0/ix_values.yaml
@@ -0,0 +1,132 @@
+image:
+ repository: gitea/gitea
+ tag: 1.21.5-rootless@sha256:874a8d88bb65f90c33fcafe4efe2de17039de1347c00f284e6f2a883a7caa55f
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10037
+ targetPort: 3000
+ ssh:
+ enabled: true
+ ports:
+ ssh:
+ enabled: true
+ port: 2222
+ targetPort: 2222
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ targetSelectAll: true
+ varlib:
+ enabled: true
+ mountPath: "/var/lib/gitea"
+ type: emptyDir
+# Configure commit/action signing prerequisites
+signing:
+ enabled: true
+ gpgHome: /data/git/.gnupg
+admin:
+ username: giteaadmin
+ password: r8sA8CPHD9!bt6d
+ email: "gitea@local.domain"
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: main
+ path: /metrics
+ldap:
+ enabled: false
+ # name:
+ # securityProtocol:
+ # host:
+ # port:
+ # userSearchBase:
+ # userFilter:
+ # adminFilter:
+ # emailAttribute:
+ # bindDn:
+ # bindPassword:
+ # usernameAttribute:
+ # sshPublicKeyAttribute:
+oauth:
+ enabled: false
+ # name:
+ # provider:
+ # key:
+ # secret:
+ # autoDiscoverUrl:
+ # useCustomUrls:
+ # customAuthUrl:
+ # customTokenUrl:
+ # customProfileUrl:
+ # customEmailUrl:
+config:
+ APP_NAME: "Gitea: Git with a cup of tea"
+ RUN_MODE: dev
+ ALLOWED_HOST_LIST: "127.0.0.1"
+ nodeIP: 127.0.0.1
+customConfig: []
+# - name: test
+# keys:
+# - name: testkey
+# value: testvalue
+
+# Enabled postgres
+cnpg:
+ main:
+ enabled: true
+ user: gitea
+ database: gitea
+# -- memcached dependency settings
+memcached:
+ enabled: true
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ runAsUser: 1000
+ runAsGroup: 1000
+ fsGroup: 1000
+workload:
+ main:
+ podSpec:
+ initContainers:
+ 1-init-directories:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/init_directory_structure.sh"
+ securityContext:
+ runAsUser: 0
+ runAsNonRoot: false
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ 2-configure-gitea:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/configure_gitea.sh"
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ containers:
+ main:
+ probes:
+ liveness:
+ type: tcp
+ readiness:
+ type: tcp
+ startup:
+ type: tcp
+ envFrom:
+ - configMapRef:
+ name: gitea-env
diff --git a/stable/gitea/17.4.0/questions.yaml b/stable/gitea/17.4.0/questions.yaml
new file mode 100644
index 0000000..0a12512
--- /dev/null
+++ b/stable/gitea/17.4.0/questions.yaml
@@ -0,0 +1,3486 @@
+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: 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: admin
+ group: "App Configuration"
+ label: "Admin Credentials"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: "username"
+ schema:
+ type: string
+ valid_chars: '^(?!^admin$).*$'
+ required: true
+ - variable: password
+ label: "password"
+ schema:
+ type: string
+ required: true
+ private: true
+ min_length: 8
+ - variable: email
+ label: "email"
+ schema:
+ type: string
+ required: true
+ - variable: config
+ group: "App Configuration"
+ label: "Admin Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: APP_NAME
+ label: "APP_NAME"
+ schema:
+ type: string
+ default: "Gitea"
+ required: true
+ - variable: RUN_MODE
+ label: "RUN_MODE"
+ schema:
+ type: string
+ default: "prod"
+ enum:
+ - value: "prod"
+ description: "Production"
+ - value: "dev"
+ description: "Development"
+ - value: "test"
+ description: "Testing"
+ - variable: ALLOWED_HOST_LIST
+ label: "ALLOWED_HOST_LIST"
+ schema:
+ type: string
+ default: "127.0.0.1"
+ required: true
+ - variable: nodeIP
+ label: Node IP
+ description: Used to generate configuration, when installed without ingress
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/nodeIP"
+ - variable: customConfig
+ group: "App Configuration"
+ label: "Custom Configuration parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ # Do not fix this typo, it will break
+ # current installations
+ - variable: catagoryItem
+ label: "Category"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Config Category Name"
+ schema:
+ type: string
+ required: true
+ - variable: keys
+ label: "Configuration Parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: configItem
+ label: "parameter"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Parameter Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Parameter Value"
+ schema:
+ type: string
+ required: true
+ - 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: 10037
+ required: true
+ - variable: ssh
+ label: "SSH Service"
+ description: "The SSH service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+
+ - 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: ssh
+ label: "SSH 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: 2222
+ 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 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: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ # 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: 1000
+ - 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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ default: false
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: scheduledBackups
+ label: ScheduledBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backupschedule
+ label: BackupSchedule
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: "daily-backup"
+ required: true
+ - variable: schedule
+ label: schedule
+ schema:
+ type: string
+ required: true
+ default: "0 0 0 * * *"
+ - variable: backupOwnerReference
+ label: backupOwnerReference
+ schema:
+ type: string
+ required: true
+ default: "self"
+ - variable: immediate
+ label: immediate
+ schema:
+ type: boolean
+ default: false
+ - variable: suspend
+ label: suspend
+ schema:
+ type: boolean
+ default: false
+ - variable: manualBackups
+ label: manualBackups
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: backup
+ label: Backup
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+
+# - variable: 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/gitea/17.4.0/templates/NOTES.txt b/stable/gitea/17.4.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/gitea/17.4.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/gitea/17.4.0/templates/_configmap.tpl b/stable/gitea/17.4.0/templates/_configmap.tpl
new file mode 100644
index 0000000..7605060
--- /dev/null
+++ b/stable/gitea/17.4.0/templates/_configmap.tpl
@@ -0,0 +1,15 @@
+{{/* Define the configmap */}}
+{{- define "gitea.configmap" -}}
+enabled: true
+data:
+ GITEA_APP_INI: "/data/gitea/conf/app.ini"
+ GITEA_CUSTOM: "/data/gitea"
+ GITEA_WORK_DIR: "/data"
+ GITEA_TEMP: "/tmp/gitea"
+ GITEA_ADMIN_USERNAME: {{ .Values.admin.username | quote }}
+ GITEA_ADMIN_PASSWORD: {{ .Values.admin.password | quote }}
+ SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }}
+ SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }}
+ TMPDIR: "/tmp/gitea"
+ GNUPGHOME: "/data/git/.gnupg"
+{{- end -}}
diff --git a/stable/gitea/17.4.0/templates/_secrets.tpl b/stable/gitea/17.4.0/templates/_secrets.tpl
new file mode 100644
index 0000000..215287c
--- /dev/null
+++ b/stable/gitea/17.4.0/templates/_secrets.tpl
@@ -0,0 +1,233 @@
+{{/* Define the secrets */}}
+{{- define "gitea.secrets" -}}
+
+{{ $DOMAIN := .Values.config.nodeIP | quote -}}
+{{ $URL := (printf "http://%s:%v/" .Values.config.nodeIP .Values.service.main.ports.main.port) }}
+{{- $pgHost := printf "%v-cnpg-main-rw" (include "tc.v1.common.lib.chart.names.fullname" $) -}}
+
+{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}}
+ {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}}
+ {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}}
+{{- end -}}
+
+secret:
+ enabled: true
+ data:
+ app.ini: |-
+ APP_NAME = {{ .Values.config.APP_NAME }}
+ RUN_MODE = {{ .Values.config.RUN_MODE }}
+
+ [cache]
+ ADAPTER = memcache
+ ENABLED = true
+ HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "cache" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [database]
+ DB_TYPE = postgres
+ HOST = {{ printf "%v:5432" $pgHost }}
+ NAME = {{ .Values.cnpg.main.database }}
+ PASSWD = {{ .Values.cnpg.main.creds.password }}
+ USER = {{ .Values.cnpg.main.user }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "database" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [metrics]
+ ENABLED = {{ .Values.metrics.main.enabled }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "metrics" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [repository]
+ ROOT = /data/git/gitea-repositories
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "repository" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+
+ [security]
+ INSTALL_LOCK = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "security" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [webhook]
+ ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }}
+
+ [server]
+ APP_DATA_PATH = /data
+ DOMAIN = {{ $DOMAIN }}
+ ENABLE_PPROF = false
+ HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }}
+ PROTOCOL = http
+ ROOT_URL = {{ $URL }}
+ SSH_DOMAIN = {{ $DOMAIN }}
+ SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }}
+ SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }}
+ START_SSH_SERVER = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "server" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }}
+ [{{ $catvalue.name }}]
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+init:
+ enabled: true
+ data:
+ init_directory_structure.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ {{- if .Values.initPreScript }}
+ # BEGIN: initPreScript
+ {{- with .Values.initPreScript -}}
+ {{ . | nindent 4}}
+ {{- end -}}
+ # END: initPreScript
+ {{- end }}
+
+ set -x
+
+ mkdir -p /data/git/.ssh
+ chmod -R 700 /data/git/.ssh
+ [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf
+
+ # prepare temp directory structure
+ mkdir -p "${GITEA_TEMP}"
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "${GITEA_TEMP}"
+ chmod ug+rwx "${GITEA_TEMP}"
+
+ # Copy config file to writable volume
+ cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/data"
+ chmod a+rwx /data/gitea/conf/app.ini
+
+ # Patch dockercontainer for dynamic users
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/var/lib/gitea"
+
+ configure_gitea.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+
+ # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de
+ function test_db_connection() {
+ local RETRY=0
+ local MAX=30
+
+ echo 'Wait for database to become avialable...'
+ until [ "${RETRY}" -ge "${MAX}" ]; do
+ nc -vz -w2 {{ $pgHost }} 5432 && break
+ RETRY=$[${RETRY}+1]
+ echo "...not ready yet (${RETRY}/${MAX})"
+ done
+
+ if [ "${RETRY}" -ge "${MAX}" ]; then
+ echo "Database not reachable after '${MAX}' attempts!"
+ exit 1
+ fi
+ }
+
+ test_db_connection
+
+
+ echo '==== BEGIN GITEA MIGRATION ===='
+
+ gitea migrate
+
+ echo '==== BEGIN GITEA CONFIGURATION ===='
+
+ {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }}
+ function configure_admin_user() {
+ local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}")
+ if [[ -z "${ACCOUNT_ID}" ]]; then
+ echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..."
+ gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false
+ echo '...created.'
+ else
+ echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..."
+ gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}"
+ echo '...password sync done.'
+ fi
+ }
+
+ configure_admin_user
+ {{- end }}
+
+ {{- if .Values.ldap.enabled }}
+ function configure_ldap() {
+ local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }}
+ local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${GITEA_AUTH_ID}" ]]; then
+ echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..."
+ gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_ldap
+ {{- end }}
+
+ {{- if .Values.oauth.enabled }}
+ function configure_oauth() {
+ local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }}
+ local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${AUTH_ID}" ]]; then
+ echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..."
+ gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_oauth
+ {{- end }}
+
+ echo '==== END GITEA CONFIGURATION ===='
+
+{{- end -}}
diff --git a/stable/gitea/17.4.0/templates/common.yaml b/stable/gitea/17.4.0/templates/common.yaml
new file mode 100644
index 0000000..ebc9e98
--- /dev/null
+++ b/stable/gitea/17.4.0/templates/common.yaml
@@ -0,0 +1,52 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render secrets for gitea */}}
+{{- $secrets := include "gitea.secrets" . | fromYaml -}}
+{{- if $secrets -}}
+ {{- $_ := mustMergeOverwrite .Values.secret $secrets -}}
+{{- end -}}
+
+{{/* Render configmap for gitea */}}
+{{- $configmap := include "gitea.configmap" . | fromYaml -}}
+{{- if $configmap -}}
+ {{- $_ := set .Values.configmap "gitea-env" $configmap -}}
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.initvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: init
+defaultMode: "0777"
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/ini
+ 1-init-directories:
+ mountPath: "/usr/sbin"
+ 2-configure-gitea:
+ mountPath: "/usr/sbin"
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.configvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: secret
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/config
+ 1-init-directories:
+ mountPath: /etc/gitea/conf
+{{- end -}}
+
+{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}}
+{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}}
+
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/gitea/17.4.0/values.yaml b/stable/gitea/17.4.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/gitea/18.14.4/.helmignore b/stable/gitea/18.14.4/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/gitea/18.14.4/.helmignore
@@ -0,0 +1,30 @@
+# 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/gitea/18.14.4/CHANGELOG.md b/stable/gitea/18.14.4/CHANGELOG.md
new file mode 100644
index 0000000..90b9870
--- /dev/null
+++ b/stable/gitea/18.14.4/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [gitea-18.14.4](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.4](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.4](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.4](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
\ No newline at end of file
diff --git a/stable/gitea/18.14.4/Chart.yaml b/stable/gitea/18.14.4/Chart.yaml
new file mode 100644
index 0000000..2e9180f
--- /dev/null
+++ b/stable/gitea/18.14.4/Chart.yaml
@@ -0,0 +1,49 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GIT
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 1.21.9
+dependencies:
+ - name: common
+ version: 20.2.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+ - name: memcached
+ version: 12.8.2
+ repository: oci://tccr.io/truecharts
+ condition: memcached.enabled
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Self hosted GIT repositories
+home: https://truecharts.org/charts/stable/gitea
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+keywords:
+ - git
+ - issue tracker
+ - code review
+ - wiki
+ - gitea
+ - gogs
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: gitea
+sources:
+ - https://gitea.com/gitea/helm-chart
+ - https://github.com/go-gitea/gitea
+ - https://github.com/truecharts/charts/tree/master/charts/stable/gitea
+ - https://hub.docker.com/r/gitea/gitea
+type: application
+version: 18.14.4
diff --git a/stable/gitea/18.14.4/README.md b/stable/gitea/18.14.4/README.md
new file mode 100644
index 0000000..1d7e1d4
--- /dev/null
+++ b/stable/gitea/18.14.4/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/gitea)
+
+**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/gitea/18.14.4/app-changelog.md b/stable/gitea/18.14.4/app-changelog.md
new file mode 100644
index 0000000..b828eee
--- /dev/null
+++ b/stable/gitea/18.14.4/app-changelog.md
@@ -0,0 +1,27 @@
+
+
+## [gitea-18.14.4](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
\ No newline at end of file
diff --git a/stable/gitea/18.14.4/app-readme.md b/stable/gitea/18.14.4/app-readme.md
new file mode 100644
index 0000000..e8603ad
--- /dev/null
+++ b/stable/gitea/18.14.4/app-readme.md
@@ -0,0 +1,8 @@
+Self hosted GIT repositories
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea)
+
+---
+
+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/gitea/18.14.4/charts/common-20.2.2.tgz b/stable/gitea/18.14.4/charts/common-20.2.2.tgz
new file mode 100644
index 0000000..a03705c
Binary files /dev/null and b/stable/gitea/18.14.4/charts/common-20.2.2.tgz differ
diff --git a/stable/gitea/18.14.4/charts/memcached-12.8.2.tgz b/stable/gitea/18.14.4/charts/memcached-12.8.2.tgz
new file mode 100644
index 0000000..1789bcb
Binary files /dev/null and b/stable/gitea/18.14.4/charts/memcached-12.8.2.tgz differ
diff --git a/stable/gitea/18.14.4/ix_values.yaml b/stable/gitea/18.14.4/ix_values.yaml
new file mode 100644
index 0000000..875b7e5
--- /dev/null
+++ b/stable/gitea/18.14.4/ix_values.yaml
@@ -0,0 +1,132 @@
+image:
+ repository: gitea/gitea
+ tag: 1.21.9-rootless@sha256:5f9b30b9b2599ead2ae4bb293bb65097a227c233a29c756940260a38e5c0d998
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10037
+ targetPort: 3000
+ ssh:
+ enabled: true
+ ports:
+ ssh:
+ enabled: true
+ port: 2222
+ targetPort: 2222
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ targetSelectAll: true
+ varlib:
+ enabled: true
+ mountPath: "/var/lib/gitea"
+ type: emptyDir
+# Configure commit/action signing prerequisites
+signing:
+ enabled: true
+ gpgHome: /data/git/.gnupg
+admin:
+ username: giteaadmin
+ password: r8sA8CPHD9!bt6d
+ email: "gitea@local.domain"
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: main
+ path: /metrics
+ldap:
+ enabled: false
+ # name:
+ # securityProtocol:
+ # host:
+ # port:
+ # userSearchBase:
+ # userFilter:
+ # adminFilter:
+ # emailAttribute:
+ # bindDn:
+ # bindPassword:
+ # usernameAttribute:
+ # sshPublicKeyAttribute:
+oauth:
+ enabled: false
+ # name:
+ # provider:
+ # key:
+ # secret:
+ # autoDiscoverUrl:
+ # useCustomUrls:
+ # customAuthUrl:
+ # customTokenUrl:
+ # customProfileUrl:
+ # customEmailUrl:
+config:
+ APP_NAME: "Gitea: Git with a cup of tea"
+ RUN_MODE: dev
+ ALLOWED_HOST_LIST: "127.0.0.1"
+ nodeIP: 127.0.0.1
+customConfig: []
+# - name: test
+# keys:
+# - name: testkey
+# value: testvalue
+
+# Enabled postgres
+cnpg:
+ main:
+ enabled: true
+ user: gitea
+ database: gitea
+# -- memcached dependency settings
+memcached:
+ enabled: true
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ runAsUser: 1000
+ runAsGroup: 1000
+ fsGroup: 1000
+workload:
+ main:
+ podSpec:
+ initContainers:
+ 1-init-directories:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/init_directory_structure.sh"
+ securityContext:
+ runAsUser: 0
+ runAsNonRoot: false
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ 2-configure-gitea:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/configure_gitea.sh"
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ containers:
+ main:
+ probes:
+ liveness:
+ type: tcp
+ readiness:
+ type: tcp
+ startup:
+ type: tcp
+ envFrom:
+ - configMapRef:
+ name: gitea-env
diff --git a/stable/gitea/18.14.4/questions.yaml b/stable/gitea/18.14.4/questions.yaml
new file mode 100644
index 0000000..17f0723
--- /dev/null
+++ b/stable/gitea/18.14.4/questions.yaml
@@ -0,0 +1,3424 @@
+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: 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: admin
+ group: "App Configuration"
+ label: "Admin Credentials"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: "username"
+ schema:
+ type: string
+ valid_chars: '^(?!^admin$).*$'
+ required: true
+ - variable: password
+ label: "password"
+ schema:
+ type: string
+ required: true
+ private: true
+ min_length: 8
+ - variable: email
+ label: "email"
+ schema:
+ type: string
+ required: true
+ - variable: config
+ group: "App Configuration"
+ label: "Admin Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: APP_NAME
+ label: "APP_NAME"
+ schema:
+ type: string
+ default: "Gitea"
+ required: true
+ - variable: RUN_MODE
+ label: "RUN_MODE"
+ schema:
+ type: string
+ default: "prod"
+ enum:
+ - value: "prod"
+ description: "Production"
+ - value: "dev"
+ description: "Development"
+ - value: "test"
+ description: "Testing"
+ - variable: ALLOWED_HOST_LIST
+ label: "ALLOWED_HOST_LIST"
+ schema:
+ type: string
+ default: "127.0.0.1"
+ required: true
+ - variable: nodeIP
+ label: Node IP
+ description: Used to generate configuration, when installed without ingress
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/nodeIP"
+ - variable: customConfig
+ group: "App Configuration"
+ label: "Custom Configuration parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ # Do not fix this typo, it will break
+ # current installations
+ - variable: catagoryItem
+ label: "Category"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Config Category Name"
+ schema:
+ type: string
+ required: true
+ - variable: keys
+ label: "Configuration Parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: configItem
+ label: "parameter"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Parameter Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Parameter Value"
+ schema:
+ type: string
+ required: true
+ - 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: 10037
+ required: true
+ - variable: ssh
+ label: "SSH Service"
+ description: "The SSH service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+
+ - 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: ssh
+ label: "SSH 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: 2222
+ 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 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: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ # 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: 1000
+ - 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: '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: 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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ show_if: [["enabled", "=", true]]
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ show_if: [["enabled", "=", true]]
+ default: false
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "revision"
+ schema:
+ type: string
+ default: ""
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "serverName"
+ schema:
+ type: int
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+
+# - variable: 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/gitea/18.14.4/templates/NOTES.txt b/stable/gitea/18.14.4/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/gitea/18.14.4/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/gitea/18.14.4/templates/_configmap.tpl b/stable/gitea/18.14.4/templates/_configmap.tpl
new file mode 100644
index 0000000..7605060
--- /dev/null
+++ b/stable/gitea/18.14.4/templates/_configmap.tpl
@@ -0,0 +1,15 @@
+{{/* Define the configmap */}}
+{{- define "gitea.configmap" -}}
+enabled: true
+data:
+ GITEA_APP_INI: "/data/gitea/conf/app.ini"
+ GITEA_CUSTOM: "/data/gitea"
+ GITEA_WORK_DIR: "/data"
+ GITEA_TEMP: "/tmp/gitea"
+ GITEA_ADMIN_USERNAME: {{ .Values.admin.username | quote }}
+ GITEA_ADMIN_PASSWORD: {{ .Values.admin.password | quote }}
+ SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }}
+ SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }}
+ TMPDIR: "/tmp/gitea"
+ GNUPGHOME: "/data/git/.gnupg"
+{{- end -}}
diff --git a/stable/gitea/18.14.4/templates/_secrets.tpl b/stable/gitea/18.14.4/templates/_secrets.tpl
new file mode 100644
index 0000000..215287c
--- /dev/null
+++ b/stable/gitea/18.14.4/templates/_secrets.tpl
@@ -0,0 +1,233 @@
+{{/* Define the secrets */}}
+{{- define "gitea.secrets" -}}
+
+{{ $DOMAIN := .Values.config.nodeIP | quote -}}
+{{ $URL := (printf "http://%s:%v/" .Values.config.nodeIP .Values.service.main.ports.main.port) }}
+{{- $pgHost := printf "%v-cnpg-main-rw" (include "tc.v1.common.lib.chart.names.fullname" $) -}}
+
+{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}}
+ {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}}
+ {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}}
+{{- end -}}
+
+secret:
+ enabled: true
+ data:
+ app.ini: |-
+ APP_NAME = {{ .Values.config.APP_NAME }}
+ RUN_MODE = {{ .Values.config.RUN_MODE }}
+
+ [cache]
+ ADAPTER = memcache
+ ENABLED = true
+ HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "cache" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [database]
+ DB_TYPE = postgres
+ HOST = {{ printf "%v:5432" $pgHost }}
+ NAME = {{ .Values.cnpg.main.database }}
+ PASSWD = {{ .Values.cnpg.main.creds.password }}
+ USER = {{ .Values.cnpg.main.user }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "database" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [metrics]
+ ENABLED = {{ .Values.metrics.main.enabled }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "metrics" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [repository]
+ ROOT = /data/git/gitea-repositories
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "repository" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+
+ [security]
+ INSTALL_LOCK = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "security" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [webhook]
+ ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }}
+
+ [server]
+ APP_DATA_PATH = /data
+ DOMAIN = {{ $DOMAIN }}
+ ENABLE_PPROF = false
+ HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }}
+ PROTOCOL = http
+ ROOT_URL = {{ $URL }}
+ SSH_DOMAIN = {{ $DOMAIN }}
+ SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }}
+ SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }}
+ START_SSH_SERVER = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "server" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }}
+ [{{ $catvalue.name }}]
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+init:
+ enabled: true
+ data:
+ init_directory_structure.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ {{- if .Values.initPreScript }}
+ # BEGIN: initPreScript
+ {{- with .Values.initPreScript -}}
+ {{ . | nindent 4}}
+ {{- end -}}
+ # END: initPreScript
+ {{- end }}
+
+ set -x
+
+ mkdir -p /data/git/.ssh
+ chmod -R 700 /data/git/.ssh
+ [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf
+
+ # prepare temp directory structure
+ mkdir -p "${GITEA_TEMP}"
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "${GITEA_TEMP}"
+ chmod ug+rwx "${GITEA_TEMP}"
+
+ # Copy config file to writable volume
+ cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/data"
+ chmod a+rwx /data/gitea/conf/app.ini
+
+ # Patch dockercontainer for dynamic users
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/var/lib/gitea"
+
+ configure_gitea.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+
+ # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de
+ function test_db_connection() {
+ local RETRY=0
+ local MAX=30
+
+ echo 'Wait for database to become avialable...'
+ until [ "${RETRY}" -ge "${MAX}" ]; do
+ nc -vz -w2 {{ $pgHost }} 5432 && break
+ RETRY=$[${RETRY}+1]
+ echo "...not ready yet (${RETRY}/${MAX})"
+ done
+
+ if [ "${RETRY}" -ge "${MAX}" ]; then
+ echo "Database not reachable after '${MAX}' attempts!"
+ exit 1
+ fi
+ }
+
+ test_db_connection
+
+
+ echo '==== BEGIN GITEA MIGRATION ===='
+
+ gitea migrate
+
+ echo '==== BEGIN GITEA CONFIGURATION ===='
+
+ {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }}
+ function configure_admin_user() {
+ local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}")
+ if [[ -z "${ACCOUNT_ID}" ]]; then
+ echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..."
+ gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false
+ echo '...created.'
+ else
+ echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..."
+ gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}"
+ echo '...password sync done.'
+ fi
+ }
+
+ configure_admin_user
+ {{- end }}
+
+ {{- if .Values.ldap.enabled }}
+ function configure_ldap() {
+ local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }}
+ local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${GITEA_AUTH_ID}" ]]; then
+ echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..."
+ gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_ldap
+ {{- end }}
+
+ {{- if .Values.oauth.enabled }}
+ function configure_oauth() {
+ local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }}
+ local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${AUTH_ID}" ]]; then
+ echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..."
+ gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_oauth
+ {{- end }}
+
+ echo '==== END GITEA CONFIGURATION ===='
+
+{{- end -}}
diff --git a/stable/gitea/18.14.4/templates/common.yaml b/stable/gitea/18.14.4/templates/common.yaml
new file mode 100644
index 0000000..ebc9e98
--- /dev/null
+++ b/stable/gitea/18.14.4/templates/common.yaml
@@ -0,0 +1,52 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render secrets for gitea */}}
+{{- $secrets := include "gitea.secrets" . | fromYaml -}}
+{{- if $secrets -}}
+ {{- $_ := mustMergeOverwrite .Values.secret $secrets -}}
+{{- end -}}
+
+{{/* Render configmap for gitea */}}
+{{- $configmap := include "gitea.configmap" . | fromYaml -}}
+{{- if $configmap -}}
+ {{- $_ := set .Values.configmap "gitea-env" $configmap -}}
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.initvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: init
+defaultMode: "0777"
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/ini
+ 1-init-directories:
+ mountPath: "/usr/sbin"
+ 2-configure-gitea:
+ mountPath: "/usr/sbin"
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.configvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: secret
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/config
+ 1-init-directories:
+ mountPath: /etc/gitea/conf
+{{- end -}}
+
+{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}}
+{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}}
+
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/gitea/18.14.4/values.yaml b/stable/gitea/18.14.4/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/gitea/18.14.5/.helmignore b/stable/gitea/18.14.5/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/gitea/18.14.5/.helmignore
@@ -0,0 +1,30 @@
+# 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/gitea/18.14.5/CHANGELOG.md b/stable/gitea/18.14.5/CHANGELOG.md
new file mode 100644
index 0000000..3c56f69
--- /dev/null
+++ b/stable/gitea/18.14.5/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [gitea-18.14.5](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.5) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.5](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.5) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.4](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.4](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.4) (2024-03-23)
+
+### Chore
+
diff --git a/stable/gitea/18.14.5/Chart.yaml b/stable/gitea/18.14.5/Chart.yaml
new file mode 100644
index 0000000..03c1e1c
--- /dev/null
+++ b/stable/gitea/18.14.5/Chart.yaml
@@ -0,0 +1,49 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GIT
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 1.21.9
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+ - name: memcached
+ version: 12.8.2
+ repository: oci://tccr.io/truecharts
+ condition: memcached.enabled
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Self hosted GIT repositories
+home: https://truecharts.org/charts/stable/gitea
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+keywords:
+ - git
+ - issue tracker
+ - code review
+ - wiki
+ - gitea
+ - gogs
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: gitea
+sources:
+ - https://gitea.com/gitea/helm-chart
+ - https://github.com/go-gitea/gitea
+ - https://github.com/truecharts/charts/tree/master/charts/stable/gitea
+ - https://hub.docker.com/r/gitea/gitea
+type: application
+version: 18.14.5
diff --git a/stable/gitea/18.14.5/README.md b/stable/gitea/18.14.5/README.md
new file mode 100644
index 0000000..1d7e1d4
--- /dev/null
+++ b/stable/gitea/18.14.5/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/gitea)
+
+**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/gitea/18.14.5/app-changelog.md b/stable/gitea/18.14.5/app-changelog.md
new file mode 100644
index 0000000..00f81ce
--- /dev/null
+++ b/stable/gitea/18.14.5/app-changelog.md
@@ -0,0 +1,29 @@
+
+
+## [gitea-18.14.5](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.5) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
\ No newline at end of file
diff --git a/stable/gitea/18.14.5/app-readme.md b/stable/gitea/18.14.5/app-readme.md
new file mode 100644
index 0000000..e8603ad
--- /dev/null
+++ b/stable/gitea/18.14.5/app-readme.md
@@ -0,0 +1,8 @@
+Self hosted GIT repositories
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea)
+
+---
+
+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/gitea/18.14.5/charts/common-20.2.3.tgz b/stable/gitea/18.14.5/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/gitea/18.14.5/charts/common-20.2.3.tgz differ
diff --git a/stable/gitea/18.14.5/charts/memcached-12.8.2.tgz b/stable/gitea/18.14.5/charts/memcached-12.8.2.tgz
new file mode 100644
index 0000000..1789bcb
Binary files /dev/null and b/stable/gitea/18.14.5/charts/memcached-12.8.2.tgz differ
diff --git a/stable/gitea/18.14.5/ix_values.yaml b/stable/gitea/18.14.5/ix_values.yaml
new file mode 100644
index 0000000..875b7e5
--- /dev/null
+++ b/stable/gitea/18.14.5/ix_values.yaml
@@ -0,0 +1,132 @@
+image:
+ repository: gitea/gitea
+ tag: 1.21.9-rootless@sha256:5f9b30b9b2599ead2ae4bb293bb65097a227c233a29c756940260a38e5c0d998
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10037
+ targetPort: 3000
+ ssh:
+ enabled: true
+ ports:
+ ssh:
+ enabled: true
+ port: 2222
+ targetPort: 2222
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ targetSelectAll: true
+ varlib:
+ enabled: true
+ mountPath: "/var/lib/gitea"
+ type: emptyDir
+# Configure commit/action signing prerequisites
+signing:
+ enabled: true
+ gpgHome: /data/git/.gnupg
+admin:
+ username: giteaadmin
+ password: r8sA8CPHD9!bt6d
+ email: "gitea@local.domain"
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: main
+ path: /metrics
+ldap:
+ enabled: false
+ # name:
+ # securityProtocol:
+ # host:
+ # port:
+ # userSearchBase:
+ # userFilter:
+ # adminFilter:
+ # emailAttribute:
+ # bindDn:
+ # bindPassword:
+ # usernameAttribute:
+ # sshPublicKeyAttribute:
+oauth:
+ enabled: false
+ # name:
+ # provider:
+ # key:
+ # secret:
+ # autoDiscoverUrl:
+ # useCustomUrls:
+ # customAuthUrl:
+ # customTokenUrl:
+ # customProfileUrl:
+ # customEmailUrl:
+config:
+ APP_NAME: "Gitea: Git with a cup of tea"
+ RUN_MODE: dev
+ ALLOWED_HOST_LIST: "127.0.0.1"
+ nodeIP: 127.0.0.1
+customConfig: []
+# - name: test
+# keys:
+# - name: testkey
+# value: testvalue
+
+# Enabled postgres
+cnpg:
+ main:
+ enabled: true
+ user: gitea
+ database: gitea
+# -- memcached dependency settings
+memcached:
+ enabled: true
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ runAsUser: 1000
+ runAsGroup: 1000
+ fsGroup: 1000
+workload:
+ main:
+ podSpec:
+ initContainers:
+ 1-init-directories:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/init_directory_structure.sh"
+ securityContext:
+ runAsUser: 0
+ runAsNonRoot: false
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ 2-configure-gitea:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/configure_gitea.sh"
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ containers:
+ main:
+ probes:
+ liveness:
+ type: tcp
+ readiness:
+ type: tcp
+ startup:
+ type: tcp
+ envFrom:
+ - configMapRef:
+ name: gitea-env
diff --git a/stable/gitea/18.14.5/questions.yaml b/stable/gitea/18.14.5/questions.yaml
new file mode 100644
index 0000000..c1fdbc4
--- /dev/null
+++ b/stable/gitea/18.14.5/questions.yaml
@@ -0,0 +1,3425 @@
+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: 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: admin
+ group: "App Configuration"
+ label: "Admin Credentials"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: "username"
+ schema:
+ type: string
+ valid_chars: '^(?!^admin$).*$'
+ required: true
+ - variable: password
+ label: "password"
+ schema:
+ type: string
+ required: true
+ private: true
+ min_length: 8
+ - variable: email
+ label: "email"
+ schema:
+ type: string
+ required: true
+ - variable: config
+ group: "App Configuration"
+ label: "Admin Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: APP_NAME
+ label: "APP_NAME"
+ schema:
+ type: string
+ default: "Gitea"
+ required: true
+ - variable: RUN_MODE
+ label: "RUN_MODE"
+ schema:
+ type: string
+ default: "prod"
+ enum:
+ - value: "prod"
+ description: "Production"
+ - value: "dev"
+ description: "Development"
+ - value: "test"
+ description: "Testing"
+ - variable: ALLOWED_HOST_LIST
+ label: "ALLOWED_HOST_LIST"
+ schema:
+ type: string
+ default: "127.0.0.1"
+ required: true
+ - variable: nodeIP
+ label: Node IP
+ description: Used to generate configuration, when installed without ingress
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/nodeIP"
+ - variable: customConfig
+ group: "App Configuration"
+ label: "Custom Configuration parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ # Do not fix this typo, it will break
+ # current installations
+ - variable: catagoryItem
+ label: "Category"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Config Category Name"
+ schema:
+ type: string
+ required: true
+ - variable: keys
+ label: "Configuration Parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: configItem
+ label: "parameter"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Parameter Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Parameter Value"
+ schema:
+ type: string
+ required: true
+ - 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: 10037
+ required: true
+ - variable: ssh
+ label: "SSH Service"
+ description: "The SSH service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+
+ - 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: ssh
+ label: "SSH 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: 2222
+ 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 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: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ # 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: 1000
+ - 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: '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: 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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ show_if: [["enabled", "=", true]]
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ show_if: [["enabled", "=", true]]
+ default: false
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "revision"
+ schema:
+ type: string
+ default: ""
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "revision"
+ schema:
+ type: string
+ default: ""
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+
+# - variable: 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/gitea/18.14.5/templates/NOTES.txt b/stable/gitea/18.14.5/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/gitea/18.14.5/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/gitea/18.14.5/templates/_configmap.tpl b/stable/gitea/18.14.5/templates/_configmap.tpl
new file mode 100644
index 0000000..7605060
--- /dev/null
+++ b/stable/gitea/18.14.5/templates/_configmap.tpl
@@ -0,0 +1,15 @@
+{{/* Define the configmap */}}
+{{- define "gitea.configmap" -}}
+enabled: true
+data:
+ GITEA_APP_INI: "/data/gitea/conf/app.ini"
+ GITEA_CUSTOM: "/data/gitea"
+ GITEA_WORK_DIR: "/data"
+ GITEA_TEMP: "/tmp/gitea"
+ GITEA_ADMIN_USERNAME: {{ .Values.admin.username | quote }}
+ GITEA_ADMIN_PASSWORD: {{ .Values.admin.password | quote }}
+ SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }}
+ SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }}
+ TMPDIR: "/tmp/gitea"
+ GNUPGHOME: "/data/git/.gnupg"
+{{- end -}}
diff --git a/stable/gitea/18.14.5/templates/_secrets.tpl b/stable/gitea/18.14.5/templates/_secrets.tpl
new file mode 100644
index 0000000..215287c
--- /dev/null
+++ b/stable/gitea/18.14.5/templates/_secrets.tpl
@@ -0,0 +1,233 @@
+{{/* Define the secrets */}}
+{{- define "gitea.secrets" -}}
+
+{{ $DOMAIN := .Values.config.nodeIP | quote -}}
+{{ $URL := (printf "http://%s:%v/" .Values.config.nodeIP .Values.service.main.ports.main.port) }}
+{{- $pgHost := printf "%v-cnpg-main-rw" (include "tc.v1.common.lib.chart.names.fullname" $) -}}
+
+{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}}
+ {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}}
+ {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}}
+{{- end -}}
+
+secret:
+ enabled: true
+ data:
+ app.ini: |-
+ APP_NAME = {{ .Values.config.APP_NAME }}
+ RUN_MODE = {{ .Values.config.RUN_MODE }}
+
+ [cache]
+ ADAPTER = memcache
+ ENABLED = true
+ HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "cache" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [database]
+ DB_TYPE = postgres
+ HOST = {{ printf "%v:5432" $pgHost }}
+ NAME = {{ .Values.cnpg.main.database }}
+ PASSWD = {{ .Values.cnpg.main.creds.password }}
+ USER = {{ .Values.cnpg.main.user }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "database" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [metrics]
+ ENABLED = {{ .Values.metrics.main.enabled }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "metrics" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [repository]
+ ROOT = /data/git/gitea-repositories
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "repository" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+
+ [security]
+ INSTALL_LOCK = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "security" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [webhook]
+ ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }}
+
+ [server]
+ APP_DATA_PATH = /data
+ DOMAIN = {{ $DOMAIN }}
+ ENABLE_PPROF = false
+ HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }}
+ PROTOCOL = http
+ ROOT_URL = {{ $URL }}
+ SSH_DOMAIN = {{ $DOMAIN }}
+ SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }}
+ SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }}
+ START_SSH_SERVER = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "server" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }}
+ [{{ $catvalue.name }}]
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+init:
+ enabled: true
+ data:
+ init_directory_structure.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ {{- if .Values.initPreScript }}
+ # BEGIN: initPreScript
+ {{- with .Values.initPreScript -}}
+ {{ . | nindent 4}}
+ {{- end -}}
+ # END: initPreScript
+ {{- end }}
+
+ set -x
+
+ mkdir -p /data/git/.ssh
+ chmod -R 700 /data/git/.ssh
+ [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf
+
+ # prepare temp directory structure
+ mkdir -p "${GITEA_TEMP}"
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "${GITEA_TEMP}"
+ chmod ug+rwx "${GITEA_TEMP}"
+
+ # Copy config file to writable volume
+ cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/data"
+ chmod a+rwx /data/gitea/conf/app.ini
+
+ # Patch dockercontainer for dynamic users
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/var/lib/gitea"
+
+ configure_gitea.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+
+ # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de
+ function test_db_connection() {
+ local RETRY=0
+ local MAX=30
+
+ echo 'Wait for database to become avialable...'
+ until [ "${RETRY}" -ge "${MAX}" ]; do
+ nc -vz -w2 {{ $pgHost }} 5432 && break
+ RETRY=$[${RETRY}+1]
+ echo "...not ready yet (${RETRY}/${MAX})"
+ done
+
+ if [ "${RETRY}" -ge "${MAX}" ]; then
+ echo "Database not reachable after '${MAX}' attempts!"
+ exit 1
+ fi
+ }
+
+ test_db_connection
+
+
+ echo '==== BEGIN GITEA MIGRATION ===='
+
+ gitea migrate
+
+ echo '==== BEGIN GITEA CONFIGURATION ===='
+
+ {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }}
+ function configure_admin_user() {
+ local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}")
+ if [[ -z "${ACCOUNT_ID}" ]]; then
+ echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..."
+ gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false
+ echo '...created.'
+ else
+ echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..."
+ gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}"
+ echo '...password sync done.'
+ fi
+ }
+
+ configure_admin_user
+ {{- end }}
+
+ {{- if .Values.ldap.enabled }}
+ function configure_ldap() {
+ local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }}
+ local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${GITEA_AUTH_ID}" ]]; then
+ echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..."
+ gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_ldap
+ {{- end }}
+
+ {{- if .Values.oauth.enabled }}
+ function configure_oauth() {
+ local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }}
+ local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${AUTH_ID}" ]]; then
+ echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..."
+ gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_oauth
+ {{- end }}
+
+ echo '==== END GITEA CONFIGURATION ===='
+
+{{- end -}}
diff --git a/stable/gitea/18.14.5/templates/common.yaml b/stable/gitea/18.14.5/templates/common.yaml
new file mode 100644
index 0000000..ebc9e98
--- /dev/null
+++ b/stable/gitea/18.14.5/templates/common.yaml
@@ -0,0 +1,52 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render secrets for gitea */}}
+{{- $secrets := include "gitea.secrets" . | fromYaml -}}
+{{- if $secrets -}}
+ {{- $_ := mustMergeOverwrite .Values.secret $secrets -}}
+{{- end -}}
+
+{{/* Render configmap for gitea */}}
+{{- $configmap := include "gitea.configmap" . | fromYaml -}}
+{{- if $configmap -}}
+ {{- $_ := set .Values.configmap "gitea-env" $configmap -}}
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.initvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: init
+defaultMode: "0777"
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/ini
+ 1-init-directories:
+ mountPath: "/usr/sbin"
+ 2-configure-gitea:
+ mountPath: "/usr/sbin"
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.configvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: secret
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/config
+ 1-init-directories:
+ mountPath: /etc/gitea/conf
+{{- end -}}
+
+{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}}
+{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}}
+
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/gitea/18.14.5/values.yaml b/stable/gitea/18.14.5/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/gitea/18.14.6/.helmignore b/stable/gitea/18.14.6/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/gitea/18.14.6/.helmignore
@@ -0,0 +1,30 @@
+# 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/gitea/18.14.6/CHANGELOG.md b/stable/gitea/18.14.6/CHANGELOG.md
new file mode 100644
index 0000000..8739389
--- /dev/null
+++ b/stable/gitea/18.14.6/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [gitea-18.14.6](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.6) (2024-03-23)
+
+### Chore
+
+
+
+- update container image memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.6](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.6) (2024-03-23)
+
+### Chore
+
+
+
+- update container image memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.6](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.6) (2024-03-23)
+
+### Chore
+
+
+
+- update container image memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
diff --git a/stable/gitea/18.14.6/Chart.yaml b/stable/gitea/18.14.6/Chart.yaml
new file mode 100644
index 0000000..d25c48b
--- /dev/null
+++ b/stable/gitea/18.14.6/Chart.yaml
@@ -0,0 +1,49 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GIT
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 1.21.9
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+ - name: memcached
+ version: 12.8.3
+ repository: oci://tccr.io/truecharts
+ condition: memcached.enabled
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Self hosted GIT repositories
+home: https://truecharts.org/charts/stable/gitea
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+keywords:
+ - git
+ - issue tracker
+ - code review
+ - wiki
+ - gitea
+ - gogs
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: gitea
+sources:
+ - https://gitea.com/gitea/helm-chart
+ - https://github.com/go-gitea/gitea
+ - https://github.com/truecharts/charts/tree/master/charts/stable/gitea
+ - https://hub.docker.com/r/gitea/gitea
+type: application
+version: 18.14.6
diff --git a/stable/gitea/18.14.6/README.md b/stable/gitea/18.14.6/README.md
new file mode 100644
index 0000000..1d7e1d4
--- /dev/null
+++ b/stable/gitea/18.14.6/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/gitea)
+
+**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/gitea/18.14.6/app-changelog.md b/stable/gitea/18.14.6/app-changelog.md
new file mode 100644
index 0000000..2ddc579
--- /dev/null
+++ b/stable/gitea/18.14.6/app-changelog.md
@@ -0,0 +1,31 @@
+
+
+## [gitea-18.14.6](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.6) (2024-03-23)
+
+### Chore
+
+
+
+- update container image memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
\ No newline at end of file
diff --git a/stable/gitea/18.14.6/app-readme.md b/stable/gitea/18.14.6/app-readme.md
new file mode 100644
index 0000000..e8603ad
--- /dev/null
+++ b/stable/gitea/18.14.6/app-readme.md
@@ -0,0 +1,8 @@
+Self hosted GIT repositories
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea)
+
+---
+
+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/gitea/18.14.6/charts/common-20.2.3.tgz b/stable/gitea/18.14.6/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/gitea/18.14.6/charts/common-20.2.3.tgz differ
diff --git a/stable/gitea/18.14.6/charts/memcached-12.8.3.tgz b/stable/gitea/18.14.6/charts/memcached-12.8.3.tgz
new file mode 100644
index 0000000..51c01f9
Binary files /dev/null and b/stable/gitea/18.14.6/charts/memcached-12.8.3.tgz differ
diff --git a/stable/gitea/18.14.6/ix_values.yaml b/stable/gitea/18.14.6/ix_values.yaml
new file mode 100644
index 0000000..875b7e5
--- /dev/null
+++ b/stable/gitea/18.14.6/ix_values.yaml
@@ -0,0 +1,132 @@
+image:
+ repository: gitea/gitea
+ tag: 1.21.9-rootless@sha256:5f9b30b9b2599ead2ae4bb293bb65097a227c233a29c756940260a38e5c0d998
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10037
+ targetPort: 3000
+ ssh:
+ enabled: true
+ ports:
+ ssh:
+ enabled: true
+ port: 2222
+ targetPort: 2222
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ targetSelectAll: true
+ varlib:
+ enabled: true
+ mountPath: "/var/lib/gitea"
+ type: emptyDir
+# Configure commit/action signing prerequisites
+signing:
+ enabled: true
+ gpgHome: /data/git/.gnupg
+admin:
+ username: giteaadmin
+ password: r8sA8CPHD9!bt6d
+ email: "gitea@local.domain"
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: main
+ path: /metrics
+ldap:
+ enabled: false
+ # name:
+ # securityProtocol:
+ # host:
+ # port:
+ # userSearchBase:
+ # userFilter:
+ # adminFilter:
+ # emailAttribute:
+ # bindDn:
+ # bindPassword:
+ # usernameAttribute:
+ # sshPublicKeyAttribute:
+oauth:
+ enabled: false
+ # name:
+ # provider:
+ # key:
+ # secret:
+ # autoDiscoverUrl:
+ # useCustomUrls:
+ # customAuthUrl:
+ # customTokenUrl:
+ # customProfileUrl:
+ # customEmailUrl:
+config:
+ APP_NAME: "Gitea: Git with a cup of tea"
+ RUN_MODE: dev
+ ALLOWED_HOST_LIST: "127.0.0.1"
+ nodeIP: 127.0.0.1
+customConfig: []
+# - name: test
+# keys:
+# - name: testkey
+# value: testvalue
+
+# Enabled postgres
+cnpg:
+ main:
+ enabled: true
+ user: gitea
+ database: gitea
+# -- memcached dependency settings
+memcached:
+ enabled: true
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ runAsUser: 1000
+ runAsGroup: 1000
+ fsGroup: 1000
+workload:
+ main:
+ podSpec:
+ initContainers:
+ 1-init-directories:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/init_directory_structure.sh"
+ securityContext:
+ runAsUser: 0
+ runAsNonRoot: false
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ 2-configure-gitea:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/configure_gitea.sh"
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ containers:
+ main:
+ probes:
+ liveness:
+ type: tcp
+ readiness:
+ type: tcp
+ startup:
+ type: tcp
+ envFrom:
+ - configMapRef:
+ name: gitea-env
diff --git a/stable/gitea/18.14.6/questions.yaml b/stable/gitea/18.14.6/questions.yaml
new file mode 100644
index 0000000..c1fdbc4
--- /dev/null
+++ b/stable/gitea/18.14.6/questions.yaml
@@ -0,0 +1,3425 @@
+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: 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: admin
+ group: "App Configuration"
+ label: "Admin Credentials"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: "username"
+ schema:
+ type: string
+ valid_chars: '^(?!^admin$).*$'
+ required: true
+ - variable: password
+ label: "password"
+ schema:
+ type: string
+ required: true
+ private: true
+ min_length: 8
+ - variable: email
+ label: "email"
+ schema:
+ type: string
+ required: true
+ - variable: config
+ group: "App Configuration"
+ label: "Admin Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: APP_NAME
+ label: "APP_NAME"
+ schema:
+ type: string
+ default: "Gitea"
+ required: true
+ - variable: RUN_MODE
+ label: "RUN_MODE"
+ schema:
+ type: string
+ default: "prod"
+ enum:
+ - value: "prod"
+ description: "Production"
+ - value: "dev"
+ description: "Development"
+ - value: "test"
+ description: "Testing"
+ - variable: ALLOWED_HOST_LIST
+ label: "ALLOWED_HOST_LIST"
+ schema:
+ type: string
+ default: "127.0.0.1"
+ required: true
+ - variable: nodeIP
+ label: Node IP
+ description: Used to generate configuration, when installed without ingress
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/nodeIP"
+ - variable: customConfig
+ group: "App Configuration"
+ label: "Custom Configuration parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ # Do not fix this typo, it will break
+ # current installations
+ - variable: catagoryItem
+ label: "Category"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Config Category Name"
+ schema:
+ type: string
+ required: true
+ - variable: keys
+ label: "Configuration Parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: configItem
+ label: "parameter"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Parameter Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Parameter Value"
+ schema:
+ type: string
+ required: true
+ - 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: 10037
+ required: true
+ - variable: ssh
+ label: "SSH Service"
+ description: "The SSH service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+
+ - 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: ssh
+ label: "SSH 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: 2222
+ 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 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: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ # 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: 1000
+ - 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: '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: 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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ show_if: [["enabled", "=", true]]
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ show_if: [["enabled", "=", true]]
+ default: false
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "revision"
+ schema:
+ type: string
+ default: ""
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "revision"
+ schema:
+ type: string
+ default: ""
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+
+# - variable: 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/gitea/18.14.6/templates/NOTES.txt b/stable/gitea/18.14.6/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/gitea/18.14.6/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/gitea/18.14.6/templates/_configmap.tpl b/stable/gitea/18.14.6/templates/_configmap.tpl
new file mode 100644
index 0000000..7605060
--- /dev/null
+++ b/stable/gitea/18.14.6/templates/_configmap.tpl
@@ -0,0 +1,15 @@
+{{/* Define the configmap */}}
+{{- define "gitea.configmap" -}}
+enabled: true
+data:
+ GITEA_APP_INI: "/data/gitea/conf/app.ini"
+ GITEA_CUSTOM: "/data/gitea"
+ GITEA_WORK_DIR: "/data"
+ GITEA_TEMP: "/tmp/gitea"
+ GITEA_ADMIN_USERNAME: {{ .Values.admin.username | quote }}
+ GITEA_ADMIN_PASSWORD: {{ .Values.admin.password | quote }}
+ SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }}
+ SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }}
+ TMPDIR: "/tmp/gitea"
+ GNUPGHOME: "/data/git/.gnupg"
+{{- end -}}
diff --git a/stable/gitea/18.14.6/templates/_secrets.tpl b/stable/gitea/18.14.6/templates/_secrets.tpl
new file mode 100644
index 0000000..215287c
--- /dev/null
+++ b/stable/gitea/18.14.6/templates/_secrets.tpl
@@ -0,0 +1,233 @@
+{{/* Define the secrets */}}
+{{- define "gitea.secrets" -}}
+
+{{ $DOMAIN := .Values.config.nodeIP | quote -}}
+{{ $URL := (printf "http://%s:%v/" .Values.config.nodeIP .Values.service.main.ports.main.port) }}
+{{- $pgHost := printf "%v-cnpg-main-rw" (include "tc.v1.common.lib.chart.names.fullname" $) -}}
+
+{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}}
+ {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}}
+ {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}}
+{{- end -}}
+
+secret:
+ enabled: true
+ data:
+ app.ini: |-
+ APP_NAME = {{ .Values.config.APP_NAME }}
+ RUN_MODE = {{ .Values.config.RUN_MODE }}
+
+ [cache]
+ ADAPTER = memcache
+ ENABLED = true
+ HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "cache" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [database]
+ DB_TYPE = postgres
+ HOST = {{ printf "%v:5432" $pgHost }}
+ NAME = {{ .Values.cnpg.main.database }}
+ PASSWD = {{ .Values.cnpg.main.creds.password }}
+ USER = {{ .Values.cnpg.main.user }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "database" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [metrics]
+ ENABLED = {{ .Values.metrics.main.enabled }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "metrics" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [repository]
+ ROOT = /data/git/gitea-repositories
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "repository" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+
+ [security]
+ INSTALL_LOCK = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "security" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [webhook]
+ ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }}
+
+ [server]
+ APP_DATA_PATH = /data
+ DOMAIN = {{ $DOMAIN }}
+ ENABLE_PPROF = false
+ HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }}
+ PROTOCOL = http
+ ROOT_URL = {{ $URL }}
+ SSH_DOMAIN = {{ $DOMAIN }}
+ SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }}
+ SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }}
+ START_SSH_SERVER = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "server" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }}
+ [{{ $catvalue.name }}]
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+init:
+ enabled: true
+ data:
+ init_directory_structure.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ {{- if .Values.initPreScript }}
+ # BEGIN: initPreScript
+ {{- with .Values.initPreScript -}}
+ {{ . | nindent 4}}
+ {{- end -}}
+ # END: initPreScript
+ {{- end }}
+
+ set -x
+
+ mkdir -p /data/git/.ssh
+ chmod -R 700 /data/git/.ssh
+ [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf
+
+ # prepare temp directory structure
+ mkdir -p "${GITEA_TEMP}"
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "${GITEA_TEMP}"
+ chmod ug+rwx "${GITEA_TEMP}"
+
+ # Copy config file to writable volume
+ cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/data"
+ chmod a+rwx /data/gitea/conf/app.ini
+
+ # Patch dockercontainer for dynamic users
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/var/lib/gitea"
+
+ configure_gitea.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+
+ # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de
+ function test_db_connection() {
+ local RETRY=0
+ local MAX=30
+
+ echo 'Wait for database to become avialable...'
+ until [ "${RETRY}" -ge "${MAX}" ]; do
+ nc -vz -w2 {{ $pgHost }} 5432 && break
+ RETRY=$[${RETRY}+1]
+ echo "...not ready yet (${RETRY}/${MAX})"
+ done
+
+ if [ "${RETRY}" -ge "${MAX}" ]; then
+ echo "Database not reachable after '${MAX}' attempts!"
+ exit 1
+ fi
+ }
+
+ test_db_connection
+
+
+ echo '==== BEGIN GITEA MIGRATION ===='
+
+ gitea migrate
+
+ echo '==== BEGIN GITEA CONFIGURATION ===='
+
+ {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }}
+ function configure_admin_user() {
+ local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}")
+ if [[ -z "${ACCOUNT_ID}" ]]; then
+ echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..."
+ gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false
+ echo '...created.'
+ else
+ echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..."
+ gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}"
+ echo '...password sync done.'
+ fi
+ }
+
+ configure_admin_user
+ {{- end }}
+
+ {{- if .Values.ldap.enabled }}
+ function configure_ldap() {
+ local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }}
+ local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${GITEA_AUTH_ID}" ]]; then
+ echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..."
+ gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_ldap
+ {{- end }}
+
+ {{- if .Values.oauth.enabled }}
+ function configure_oauth() {
+ local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }}
+ local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${AUTH_ID}" ]]; then
+ echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..."
+ gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_oauth
+ {{- end }}
+
+ echo '==== END GITEA CONFIGURATION ===='
+
+{{- end -}}
diff --git a/stable/gitea/18.14.6/templates/common.yaml b/stable/gitea/18.14.6/templates/common.yaml
new file mode 100644
index 0000000..ebc9e98
--- /dev/null
+++ b/stable/gitea/18.14.6/templates/common.yaml
@@ -0,0 +1,52 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render secrets for gitea */}}
+{{- $secrets := include "gitea.secrets" . | fromYaml -}}
+{{- if $secrets -}}
+ {{- $_ := mustMergeOverwrite .Values.secret $secrets -}}
+{{- end -}}
+
+{{/* Render configmap for gitea */}}
+{{- $configmap := include "gitea.configmap" . | fromYaml -}}
+{{- if $configmap -}}
+ {{- $_ := set .Values.configmap "gitea-env" $configmap -}}
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.initvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: init
+defaultMode: "0777"
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/ini
+ 1-init-directories:
+ mountPath: "/usr/sbin"
+ 2-configure-gitea:
+ mountPath: "/usr/sbin"
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.configvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: secret
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/config
+ 1-init-directories:
+ mountPath: /etc/gitea/conf
+{{- end -}}
+
+{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}}
+{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}}
+
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/gitea/18.14.6/values.yaml b/stable/gitea/18.14.6/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/gitea/18.14.7/.helmignore b/stable/gitea/18.14.7/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/gitea/18.14.7/.helmignore
@@ -0,0 +1,30 @@
+# 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/gitea/18.14.7/CHANGELOG.md b/stable/gitea/18.14.7/CHANGELOG.md
new file mode 100644
index 0000000..55a04a0
--- /dev/null
+++ b/stable/gitea/18.14.7/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [gitea-18.14.7](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.7) (2024-03-25)
+
+### Chore
+
+
+
+- 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 memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.7](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.7) (2024-03-25)
+
+### Chore
+
+
+
+- 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 memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
+
+
+## [gitea-18.14.6](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.6) (2024-03-23)
+
+### Chore
+
+
+
+- update container image memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
diff --git a/stable/gitea/18.14.7/Chart.yaml b/stable/gitea/18.14.7/Chart.yaml
new file mode 100644
index 0000000..9e48f75
--- /dev/null
+++ b/stable/gitea/18.14.7/Chart.yaml
@@ -0,0 +1,49 @@
+annotations:
+ max_scale_version: 24.04.0
+ min_scale_version: 23.10.0
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/category: GIT
+ truecharts.org/max_helm_version: "3.14"
+ truecharts.org/min_helm_version: "3.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 1.21.9
+dependencies:
+ - name: common
+ version: 20.2.4
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+ - name: memcached
+ version: 12.8.3
+ repository: oci://tccr.io/truecharts
+ condition: memcached.enabled
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Self hosted GIT repositories
+home: https://truecharts.org/charts/stable/gitea
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+keywords:
+ - git
+ - issue tracker
+ - code review
+ - wiki
+ - gitea
+ - gogs
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: gitea
+sources:
+ - https://gitea.com/gitea/helm-chart
+ - https://github.com/go-gitea/gitea
+ - https://github.com/truecharts/charts/tree/master/charts/stable/gitea
+ - https://hub.docker.com/r/gitea/gitea
+type: application
+version: 18.14.7
diff --git a/stable/gitea/18.14.7/README.md b/stable/gitea/18.14.7/README.md
new file mode 100644
index 0000000..1d7e1d4
--- /dev/null
+++ b/stable/gitea/18.14.7/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/gitea)
+
+**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/gitea/18.14.7/app-changelog.md b/stable/gitea/18.14.7/app-changelog.md
new file mode 100644
index 0000000..64fa907
--- /dev/null
+++ b/stable/gitea/18.14.7/app-changelog.md
@@ -0,0 +1,33 @@
+
+
+## [gitea-18.14.7](https://github.com/truecharts/charts/compare/gitea-18.11.0...gitea-18.14.7) (2024-03-25)
+
+### Chore
+
+
+
+- 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 memcached to v12.8.3[@0d3a9c4](https://github.com/0d3a9c4) by renovate ([#19694](https://github.com/truecharts/charts/issues/19694))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image gitea/gitea to v1.21.9[@5f9b30b](https://github.com/5f9b30b) by renovate ([#19627](https://github.com/truecharts/charts/issues/19627))
+
+- update container image memcached to v12.8.2[@498f00f](https://github.com/498f00f) by renovate ([#19535](https://github.com/truecharts/charts/issues/19535))
+
+- update container image memcached to v12.8.1[@18f10eb](https://github.com/18f10eb) by renovate ([#19442](https://github.com/truecharts/charts/issues/19442))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19390](https://github.com/truecharts/charts/issues/19390))
+
+- update container image memcached to v12.8.0[@ac16683](https://github.com/ac16683) by renovate ([#19394](https://github.com/truecharts/charts/issues/19394))
+
+- update container image memcached to v12.7.0[@e63a46e](https://github.com/e63a46e) by renovate ([#19363](https://github.com/truecharts/charts/issues/19363))
+
+- 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 gitea/gitea to v1.21.8[@e7ee046](https://github.com/e7ee046) by renovate ([#19311](https://github.com/truecharts/charts/issues/19311))
+
+- update container image memcached to v12.6.4[@23b2892](https://github.com/23b2892) by renovate ([#19319](https://github.com/truecharts/charts/issues/19319))
\ No newline at end of file
diff --git a/stable/gitea/18.14.7/app-readme.md b/stable/gitea/18.14.7/app-readme.md
new file mode 100644
index 0000000..e8603ad
--- /dev/null
+++ b/stable/gitea/18.14.7/app-readme.md
@@ -0,0 +1,8 @@
+Self hosted GIT repositories
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea)
+
+---
+
+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/gitea/18.14.7/charts/common-20.2.4.tgz b/stable/gitea/18.14.7/charts/common-20.2.4.tgz
new file mode 100644
index 0000000..e02a4ec
Binary files /dev/null and b/stable/gitea/18.14.7/charts/common-20.2.4.tgz differ
diff --git a/stable/gitea/18.14.7/charts/memcached-12.8.3.tgz b/stable/gitea/18.14.7/charts/memcached-12.8.3.tgz
new file mode 100644
index 0000000..51c01f9
Binary files /dev/null and b/stable/gitea/18.14.7/charts/memcached-12.8.3.tgz differ
diff --git a/stable/gitea/18.14.7/ix_values.yaml b/stable/gitea/18.14.7/ix_values.yaml
new file mode 100644
index 0000000..875b7e5
--- /dev/null
+++ b/stable/gitea/18.14.7/ix_values.yaml
@@ -0,0 +1,132 @@
+image:
+ repository: gitea/gitea
+ tag: 1.21.9-rootless@sha256:5f9b30b9b2599ead2ae4bb293bb65097a227c233a29c756940260a38e5c0d998
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10037
+ targetPort: 3000
+ ssh:
+ enabled: true
+ ports:
+ ssh:
+ enabled: true
+ port: 2222
+ targetPort: 2222
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ targetSelectAll: true
+ varlib:
+ enabled: true
+ mountPath: "/var/lib/gitea"
+ type: emptyDir
+# Configure commit/action signing prerequisites
+signing:
+ enabled: true
+ gpgHome: /data/git/.gnupg
+admin:
+ username: giteaadmin
+ password: r8sA8CPHD9!bt6d
+ email: "gitea@local.domain"
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: main
+ path: /metrics
+ldap:
+ enabled: false
+ # name:
+ # securityProtocol:
+ # host:
+ # port:
+ # userSearchBase:
+ # userFilter:
+ # adminFilter:
+ # emailAttribute:
+ # bindDn:
+ # bindPassword:
+ # usernameAttribute:
+ # sshPublicKeyAttribute:
+oauth:
+ enabled: false
+ # name:
+ # provider:
+ # key:
+ # secret:
+ # autoDiscoverUrl:
+ # useCustomUrls:
+ # customAuthUrl:
+ # customTokenUrl:
+ # customProfileUrl:
+ # customEmailUrl:
+config:
+ APP_NAME: "Gitea: Git with a cup of tea"
+ RUN_MODE: dev
+ ALLOWED_HOST_LIST: "127.0.0.1"
+ nodeIP: 127.0.0.1
+customConfig: []
+# - name: test
+# keys:
+# - name: testkey
+# value: testvalue
+
+# Enabled postgres
+cnpg:
+ main:
+ enabled: true
+ user: gitea
+ database: gitea
+# -- memcached dependency settings
+memcached:
+ enabled: true
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ runAsUser: 1000
+ runAsGroup: 1000
+ fsGroup: 1000
+workload:
+ main:
+ podSpec:
+ initContainers:
+ 1-init-directories:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/init_directory_structure.sh"
+ securityContext:
+ runAsUser: 0
+ runAsNonRoot: false
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ 2-configure-gitea:
+ enabled: true
+ imageSelector: image
+ type: init
+ command:
+ - "/usr/sbin/configure_gitea.sh"
+ envFrom:
+ - configMapRef:
+ name: gitea-env
+ containers:
+ main:
+ probes:
+ liveness:
+ type: tcp
+ readiness:
+ type: tcp
+ startup:
+ type: tcp
+ envFrom:
+ - configMapRef:
+ name: gitea-env
diff --git a/stable/gitea/18.14.7/questions.yaml b/stable/gitea/18.14.7/questions.yaml
new file mode 100644
index 0000000..c1fdbc4
--- /dev/null
+++ b/stable/gitea/18.14.7/questions.yaml
@@ -0,0 +1,3425 @@
+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: 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: admin
+ group: "App Configuration"
+ label: "Admin Credentials"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: "username"
+ schema:
+ type: string
+ valid_chars: '^(?!^admin$).*$'
+ required: true
+ - variable: password
+ label: "password"
+ schema:
+ type: string
+ required: true
+ private: true
+ min_length: 8
+ - variable: email
+ label: "email"
+ schema:
+ type: string
+ required: true
+ - variable: config
+ group: "App Configuration"
+ label: "Admin Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: APP_NAME
+ label: "APP_NAME"
+ schema:
+ type: string
+ default: "Gitea"
+ required: true
+ - variable: RUN_MODE
+ label: "RUN_MODE"
+ schema:
+ type: string
+ default: "prod"
+ enum:
+ - value: "prod"
+ description: "Production"
+ - value: "dev"
+ description: "Development"
+ - value: "test"
+ description: "Testing"
+ - variable: ALLOWED_HOST_LIST
+ label: "ALLOWED_HOST_LIST"
+ schema:
+ type: string
+ default: "127.0.0.1"
+ required: true
+ - variable: nodeIP
+ label: Node IP
+ description: Used to generate configuration, when installed without ingress
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/nodeIP"
+ - variable: customConfig
+ group: "App Configuration"
+ label: "Custom Configuration parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ # Do not fix this typo, it will break
+ # current installations
+ - variable: catagoryItem
+ label: "Category"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Config Category Name"
+ schema:
+ type: string
+ required: true
+ - variable: keys
+ label: "Configuration Parameters"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: configItem
+ label: "parameter"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Parameter Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Parameter Value"
+ schema:
+ type: string
+ required: true
+ - 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: 10037
+ required: true
+ - variable: ssh
+ label: "SSH Service"
+ description: "The SSH service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+
+ - 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: ssh
+ label: "SSH 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: 2222
+ 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 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: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ # 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: 1000
+ - 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: '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: 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: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ show_if: [["enabled", "=", true]]
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ show_if: [["enabled", "=", true]]
+ default: false
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "revision"
+ schema:
+ type: string
+ default: ""
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "revision"
+ schema:
+ type: string
+ default: ""
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+
+# - variable: 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/gitea/18.14.7/templates/NOTES.txt b/stable/gitea/18.14.7/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/gitea/18.14.7/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/gitea/18.14.7/templates/_configmap.tpl b/stable/gitea/18.14.7/templates/_configmap.tpl
new file mode 100644
index 0000000..7605060
--- /dev/null
+++ b/stable/gitea/18.14.7/templates/_configmap.tpl
@@ -0,0 +1,15 @@
+{{/* Define the configmap */}}
+{{- define "gitea.configmap" -}}
+enabled: true
+data:
+ GITEA_APP_INI: "/data/gitea/conf/app.ini"
+ GITEA_CUSTOM: "/data/gitea"
+ GITEA_WORK_DIR: "/data"
+ GITEA_TEMP: "/tmp/gitea"
+ GITEA_ADMIN_USERNAME: {{ .Values.admin.username | quote }}
+ GITEA_ADMIN_PASSWORD: {{ .Values.admin.password | quote }}
+ SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }}
+ SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }}
+ TMPDIR: "/tmp/gitea"
+ GNUPGHOME: "/data/git/.gnupg"
+{{- end -}}
diff --git a/stable/gitea/18.14.7/templates/_secrets.tpl b/stable/gitea/18.14.7/templates/_secrets.tpl
new file mode 100644
index 0000000..215287c
--- /dev/null
+++ b/stable/gitea/18.14.7/templates/_secrets.tpl
@@ -0,0 +1,233 @@
+{{/* Define the secrets */}}
+{{- define "gitea.secrets" -}}
+
+{{ $DOMAIN := .Values.config.nodeIP | quote -}}
+{{ $URL := (printf "http://%s:%v/" .Values.config.nodeIP .Values.service.main.ports.main.port) }}
+{{- $pgHost := printf "%v-cnpg-main-rw" (include "tc.v1.common.lib.chart.names.fullname" $) -}}
+
+{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}}
+ {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}}
+ {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}}
+{{- end -}}
+
+secret:
+ enabled: true
+ data:
+ app.ini: |-
+ APP_NAME = {{ .Values.config.APP_NAME }}
+ RUN_MODE = {{ .Values.config.RUN_MODE }}
+
+ [cache]
+ ADAPTER = memcache
+ ENABLED = true
+ HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "cache" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [database]
+ DB_TYPE = postgres
+ HOST = {{ printf "%v:5432" $pgHost }}
+ NAME = {{ .Values.cnpg.main.database }}
+ PASSWD = {{ .Values.cnpg.main.creds.password }}
+ USER = {{ .Values.cnpg.main.user }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "database" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [metrics]
+ ENABLED = {{ .Values.metrics.main.enabled }}
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "metrics" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [repository]
+ ROOT = /data/git/gitea-repositories
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "repository" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+
+ [security]
+ INSTALL_LOCK = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "security" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ [webhook]
+ ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }}
+
+ [server]
+ APP_DATA_PATH = /data
+ DOMAIN = {{ $DOMAIN }}
+ ENABLE_PPROF = false
+ HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }}
+ PROTOCOL = http
+ ROOT_URL = {{ $URL }}
+ SSH_DOMAIN = {{ $DOMAIN }}
+ SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }}
+ SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }}
+ START_SSH_SERVER = true
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if eq $catvalue.name "server" }}
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+ {{- range $catindex, $catvalue := .Values.customConfig }}
+ {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }}
+ [{{ $catvalue.name }}]
+ {{- range $index, $value := $catvalue.keys }}
+ {{ $value.name }} = {{ $value.value }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+init:
+ enabled: true
+ data:
+ init_directory_structure.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ {{- if .Values.initPreScript }}
+ # BEGIN: initPreScript
+ {{- with .Values.initPreScript -}}
+ {{ . | nindent 4}}
+ {{- end -}}
+ # END: initPreScript
+ {{- end }}
+
+ set -x
+
+ mkdir -p /data/git/.ssh
+ chmod -R 700 /data/git/.ssh
+ [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf
+
+ # prepare temp directory structure
+ mkdir -p "${GITEA_TEMP}"
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "${GITEA_TEMP}"
+ chmod ug+rwx "${GITEA_TEMP}"
+
+ # Copy config file to writable volume
+ cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/data"
+ chmod a+rwx /data/gitea/conf/app.ini
+
+ # Patch dockercontainer for dynamic users
+ chown -Rf {{ .Values.securityContext.container.runAsUser }}:{{ .Values.securityContext.pod.fsGroup }} "/var/lib/gitea"
+
+ configure_gitea.sh: |-
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+
+ # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de
+ function test_db_connection() {
+ local RETRY=0
+ local MAX=30
+
+ echo 'Wait for database to become avialable...'
+ until [ "${RETRY}" -ge "${MAX}" ]; do
+ nc -vz -w2 {{ $pgHost }} 5432 && break
+ RETRY=$[${RETRY}+1]
+ echo "...not ready yet (${RETRY}/${MAX})"
+ done
+
+ if [ "${RETRY}" -ge "${MAX}" ]; then
+ echo "Database not reachable after '${MAX}' attempts!"
+ exit 1
+ fi
+ }
+
+ test_db_connection
+
+
+ echo '==== BEGIN GITEA MIGRATION ===='
+
+ gitea migrate
+
+ echo '==== BEGIN GITEA CONFIGURATION ===='
+
+ {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }}
+ function configure_admin_user() {
+ local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}")
+ if [[ -z "${ACCOUNT_ID}" ]]; then
+ echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..."
+ gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false
+ echo '...created.'
+ else
+ echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..."
+ gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}"
+ echo '...password sync done.'
+ fi
+ }
+
+ configure_admin_user
+ {{- end }}
+
+ {{- if .Values.ldap.enabled }}
+ function configure_ldap() {
+ local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }}
+ local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${GITEA_AUTH_ID}" ]]; then
+ echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..."
+ gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_ldap
+ {{- end }}
+
+ {{- if .Values.oauth.enabled }}
+ function configure_oauth() {
+ local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }}
+ local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}")
+
+ if [[ -z "${AUTH_ID}" ]]; then
+ echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..."
+ gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...installed.'
+ else
+ echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..."
+ gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }}
+ echo '...sync settings done.'
+ fi
+ }
+
+ configure_oauth
+ {{- end }}
+
+ echo '==== END GITEA CONFIGURATION ===='
+
+{{- end -}}
diff --git a/stable/gitea/18.14.7/templates/common.yaml b/stable/gitea/18.14.7/templates/common.yaml
new file mode 100644
index 0000000..ebc9e98
--- /dev/null
+++ b/stable/gitea/18.14.7/templates/common.yaml
@@ -0,0 +1,52 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . }}
+
+{{/* Render secrets for gitea */}}
+{{- $secrets := include "gitea.secrets" . | fromYaml -}}
+{{- if $secrets -}}
+ {{- $_ := mustMergeOverwrite .Values.secret $secrets -}}
+{{- end -}}
+
+{{/* Render configmap for gitea */}}
+{{- $configmap := include "gitea.configmap" . | fromYaml -}}
+{{- if $configmap -}}
+ {{- $_ := set .Values.configmap "gitea-env" $configmap -}}
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.initvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: init
+defaultMode: "0777"
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/ini
+ 1-init-directories:
+ mountPath: "/usr/sbin"
+ 2-configure-gitea:
+ mountPath: "/usr/sbin"
+{{- end -}}
+
+{{/* Append the general secret volumes to the volumes */}}
+{{- define "gitea.configvolume" -}}
+enabled: true
+readOnly: true
+type: secret
+objectName: secret
+targetSelector:
+ main:
+ main:
+ mountPath: /secrets/config
+ 1-init-directories:
+ mountPath: /etc/gitea/conf
+{{- end -}}
+
+{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}}
+{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}}
+
+
+{{/* Render the templates */}}
+{{ include "tc.v1.common.loader.apply" . }}
diff --git a/stable/gitea/18.14.7/values.yaml b/stable/gitea/18.14.7/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/gitea/app_versions.json b/stable/gitea/app_versions.json
new file mode 100644
index 0000000..507452f
--- /dev/null
+++ b/stable/gitea/app_versions.json
@@ -0,0 +1,42286 @@
+{
+ "18.14.7": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/gitea/18.14.7",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "definitions/nodeIP",
+ "normalize/interfaceConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.21.9_18.14.7",
+ "version": "18.14.7",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GIT",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.21.9",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.4",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ },
+ {
+ "name": "memcached",
+ "version": "12.8.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "memcached.enabled",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Self hosted GIT repositories",
+ "home": "https://truecharts.org/charts/stable/gitea",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png",
+ "keywords": [
+ "git",
+ "issue tracker",
+ "code review",
+ "wiki",
+ "gitea",
+ "gogs"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "gitea",
+ "sources": [
+ "https://gitea.com/gitea/helm-chart",
+ "https://github.com/go-gitea/gitea",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/gitea",
+ "https://hub.docker.com/r/gitea/gitea"
+ ],
+ "type": "application",
+ "version": "18.14.7"
+ },
+ "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": "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": "admin",
+ "group": "App Configuration",
+ "label": "Admin Credentials",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "valid_chars": "^(?!^admin$).*$",
+ "required": true
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "min_length": 8
+ }
+ },
+ {
+ "variable": "email",
+ "label": "email",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "config",
+ "group": "App Configuration",
+ "label": "Admin Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "APP_NAME",
+ "label": "APP_NAME",
+ "schema": {
+ "type": "string",
+ "default": "Gitea",
+ "required": true
+ }
+ },
+ {
+ "variable": "RUN_MODE",
+ "label": "RUN_MODE",
+ "schema": {
+ "type": "string",
+ "default": "prod",
+ "enum": [
+ {
+ "value": "prod",
+ "description": "Production"
+ },
+ {
+ "value": "dev",
+ "description": "Development"
+ },
+ {
+ "value": "test",
+ "description": "Testing"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ALLOWED_HOST_LIST",
+ "label": "ALLOWED_HOST_LIST",
+ "schema": {
+ "type": "string",
+ "default": "127.0.0.1",
+ "required": true
+ }
+ },
+ {
+ "variable": "nodeIP",
+ "label": "Node IP",
+ "description": "Used to generate configuration, when installed without ingress",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/nodeIP"
+ ],
+ "default": "192.168.0.10"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "customConfig",
+ "group": "App Configuration",
+ "label": "Custom Configuration parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "catagoryItem",
+ "label": "Category",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Config Category Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "keys",
+ "label": "Configuration Parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "configItem",
+ "label": "parameter",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Parameter Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "value",
+ "label": "Parameter Value",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 10037,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ssh",
+ "label": "SSH Service",
+ "description": "The SSH service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ssh",
+ "label": "SSH 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": 2222,
+ "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": "data",
+ "label": "App data 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": 1000
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 1000
+ }
+ },
+ {
+ "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": 1000
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "revision",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "revision",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "Self hosted GIT repositories
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/gitea
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image memcached to v12.8.3@0d3a9c4 by renovate (#19694)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image memcached to v12.8.3@0d3a9c4 by renovate (#19694)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image memcached to v12.8.3@0d3a9c4 by renovate (#19694)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n
"
+ },
+ "18.14.6": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/gitea/18.14.6",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "definitions/nodeIP",
+ "normalize/interfaceConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.21.9_18.14.6",
+ "version": "18.14.6",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GIT",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.21.9",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ },
+ {
+ "name": "memcached",
+ "version": "12.8.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "memcached.enabled",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Self hosted GIT repositories",
+ "home": "https://truecharts.org/charts/stable/gitea",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png",
+ "keywords": [
+ "git",
+ "issue tracker",
+ "code review",
+ "wiki",
+ "gitea",
+ "gogs"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "gitea",
+ "sources": [
+ "https://gitea.com/gitea/helm-chart",
+ "https://github.com/go-gitea/gitea",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/gitea",
+ "https://hub.docker.com/r/gitea/gitea"
+ ],
+ "type": "application",
+ "version": "18.14.6"
+ },
+ "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": "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": "admin",
+ "group": "App Configuration",
+ "label": "Admin Credentials",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "valid_chars": "^(?!^admin$).*$",
+ "required": true
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "min_length": 8
+ }
+ },
+ {
+ "variable": "email",
+ "label": "email",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "config",
+ "group": "App Configuration",
+ "label": "Admin Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "APP_NAME",
+ "label": "APP_NAME",
+ "schema": {
+ "type": "string",
+ "default": "Gitea",
+ "required": true
+ }
+ },
+ {
+ "variable": "RUN_MODE",
+ "label": "RUN_MODE",
+ "schema": {
+ "type": "string",
+ "default": "prod",
+ "enum": [
+ {
+ "value": "prod",
+ "description": "Production"
+ },
+ {
+ "value": "dev",
+ "description": "Development"
+ },
+ {
+ "value": "test",
+ "description": "Testing"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ALLOWED_HOST_LIST",
+ "label": "ALLOWED_HOST_LIST",
+ "schema": {
+ "type": "string",
+ "default": "127.0.0.1",
+ "required": true
+ }
+ },
+ {
+ "variable": "nodeIP",
+ "label": "Node IP",
+ "description": "Used to generate configuration, when installed without ingress",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/nodeIP"
+ ],
+ "default": "192.168.0.10"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "customConfig",
+ "group": "App Configuration",
+ "label": "Custom Configuration parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "catagoryItem",
+ "label": "Category",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Config Category Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "keys",
+ "label": "Configuration Parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "configItem",
+ "label": "parameter",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Parameter Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "value",
+ "label": "Parameter Value",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 10037,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ssh",
+ "label": "SSH Service",
+ "description": "The SSH service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ssh",
+ "label": "SSH 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": 2222,
+ "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": "data",
+ "label": "App data 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": 1000
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 1000
+ }
+ },
+ {
+ "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": 1000
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "revision",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "revision",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "Self hosted GIT repositories
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/gitea
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image memcached to v12.8.3@0d3a9c4 by renovate (#19694)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image memcached to v12.8.3@0d3a9c4 by renovate (#19694)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image memcached to v12.8.3@0d3a9c4 by renovate (#19694)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n
"
+ },
+ "18.14.5": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/gitea/18.14.5",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "definitions/nodeIP",
+ "normalize/interfaceConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.21.9_18.14.5",
+ "version": "18.14.5",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GIT",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.21.9",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ },
+ {
+ "name": "memcached",
+ "version": "12.8.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "memcached.enabled",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Self hosted GIT repositories",
+ "home": "https://truecharts.org/charts/stable/gitea",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png",
+ "keywords": [
+ "git",
+ "issue tracker",
+ "code review",
+ "wiki",
+ "gitea",
+ "gogs"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "gitea",
+ "sources": [
+ "https://gitea.com/gitea/helm-chart",
+ "https://github.com/go-gitea/gitea",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/gitea",
+ "https://hub.docker.com/r/gitea/gitea"
+ ],
+ "type": "application",
+ "version": "18.14.5"
+ },
+ "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": "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": "admin",
+ "group": "App Configuration",
+ "label": "Admin Credentials",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "valid_chars": "^(?!^admin$).*$",
+ "required": true
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "min_length": 8
+ }
+ },
+ {
+ "variable": "email",
+ "label": "email",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "config",
+ "group": "App Configuration",
+ "label": "Admin Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "APP_NAME",
+ "label": "APP_NAME",
+ "schema": {
+ "type": "string",
+ "default": "Gitea",
+ "required": true
+ }
+ },
+ {
+ "variable": "RUN_MODE",
+ "label": "RUN_MODE",
+ "schema": {
+ "type": "string",
+ "default": "prod",
+ "enum": [
+ {
+ "value": "prod",
+ "description": "Production"
+ },
+ {
+ "value": "dev",
+ "description": "Development"
+ },
+ {
+ "value": "test",
+ "description": "Testing"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ALLOWED_HOST_LIST",
+ "label": "ALLOWED_HOST_LIST",
+ "schema": {
+ "type": "string",
+ "default": "127.0.0.1",
+ "required": true
+ }
+ },
+ {
+ "variable": "nodeIP",
+ "label": "Node IP",
+ "description": "Used to generate configuration, when installed without ingress",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/nodeIP"
+ ],
+ "default": "192.168.0.10"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "customConfig",
+ "group": "App Configuration",
+ "label": "Custom Configuration parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "catagoryItem",
+ "label": "Category",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Config Category Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "keys",
+ "label": "Configuration Parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "configItem",
+ "label": "parameter",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Parameter Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "value",
+ "label": "Parameter Value",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 10037,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ssh",
+ "label": "SSH Service",
+ "description": "The SSH service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ssh",
+ "label": "SSH 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": 2222,
+ "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": "data",
+ "label": "App data 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": 1000
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 1000
+ }
+ },
+ {
+ "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": 1000
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "revision",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "revision",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "Self hosted GIT repositories
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/gitea
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
"
+ },
+ "18.14.4": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/gitea/18.14.4",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "definitions/nodeIP",
+ "normalize/interfaceConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.21.9_18.14.4",
+ "version": "18.14.4",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GIT",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.21.9",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ },
+ {
+ "name": "memcached",
+ "version": "12.8.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "memcached.enabled",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Self hosted GIT repositories",
+ "home": "https://truecharts.org/charts/stable/gitea",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png",
+ "keywords": [
+ "git",
+ "issue tracker",
+ "code review",
+ "wiki",
+ "gitea",
+ "gogs"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "gitea",
+ "sources": [
+ "https://gitea.com/gitea/helm-chart",
+ "https://github.com/go-gitea/gitea",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/gitea",
+ "https://hub.docker.com/r/gitea/gitea"
+ ],
+ "type": "application",
+ "version": "18.14.4"
+ },
+ "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": "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": "admin",
+ "group": "App Configuration",
+ "label": "Admin Credentials",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "valid_chars": "^(?!^admin$).*$",
+ "required": true
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "min_length": 8
+ }
+ },
+ {
+ "variable": "email",
+ "label": "email",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "config",
+ "group": "App Configuration",
+ "label": "Admin Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "APP_NAME",
+ "label": "APP_NAME",
+ "schema": {
+ "type": "string",
+ "default": "Gitea",
+ "required": true
+ }
+ },
+ {
+ "variable": "RUN_MODE",
+ "label": "RUN_MODE",
+ "schema": {
+ "type": "string",
+ "default": "prod",
+ "enum": [
+ {
+ "value": "prod",
+ "description": "Production"
+ },
+ {
+ "value": "dev",
+ "description": "Development"
+ },
+ {
+ "value": "test",
+ "description": "Testing"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ALLOWED_HOST_LIST",
+ "label": "ALLOWED_HOST_LIST",
+ "schema": {
+ "type": "string",
+ "default": "127.0.0.1",
+ "required": true
+ }
+ },
+ {
+ "variable": "nodeIP",
+ "label": "Node IP",
+ "description": "Used to generate configuration, when installed without ingress",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/nodeIP"
+ ],
+ "default": "192.168.0.10"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "customConfig",
+ "group": "App Configuration",
+ "label": "Custom Configuration parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "catagoryItem",
+ "label": "Category",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Config Category Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "keys",
+ "label": "Configuration Parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "configItem",
+ "label": "parameter",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Parameter Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "value",
+ "label": "Parameter Value",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 10037,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ssh",
+ "label": "SSH Service",
+ "description": "The SSH service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ssh",
+ "label": "SSH 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": 2222,
+ "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": "data",
+ "label": "App data 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": 1000
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 1000
+ }
+ },
+ {
+ "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": 1000
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "revision",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "serverName",
+ "label": "serverName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "revision",
+ "label": "serverName",
+ "schema": {
+ "type": "int"
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "Self hosted GIT repositories
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/gitea
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n\n- \n
update container image gitea/gitea to v1.21.9@5f9b30b by renovate (#19627)
\n \n- \n
update container image memcached to v12.8.2@498f00f by renovate (#19535)
\n \n- \n
update container image memcached to v12.8.1@18f10eb by renovate (#19442)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19390)
\n \n- \n
update container image memcached to v12.8.0@ac16683 by renovate (#19394)
\n \n- \n
update container image memcached to v12.7.0@e63a46e by renovate (#19363)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image gitea/gitea to v1.21.8@e7ee046 by renovate (#19311)
\n \n- \n
update container image memcached to v12.6.4@23b2892 by renovate (#19319)
\n \n
\n\nChore
\n"
+ },
+ "17.4.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/gitea/17.4.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "definitions/nodeIP",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.21.5_17.4.0",
+ "version": "17.4.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GIT",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.21.5",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.5.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ },
+ {
+ "name": "memcached",
+ "version": "11.2.1",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "memcached.enabled",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Self hosted GIT repositories",
+ "home": "https://truecharts.org/charts/stable/gitea",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png",
+ "keywords": [
+ "git",
+ "issue tracker",
+ "code review",
+ "wiki",
+ "gitea",
+ "gogs"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "gitea",
+ "sources": [
+ "https://gitea.com/gitea/helm-chart",
+ "https://github.com/go-gitea/gitea",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/gitea",
+ "https://hub.docker.com/r/gitea/gitea"
+ ],
+ "type": "application",
+ "version": "17.4.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": "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": "admin",
+ "group": "App Configuration",
+ "label": "Admin Credentials",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "valid_chars": "^(?!^admin$).*$",
+ "required": true
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "min_length": 8
+ }
+ },
+ {
+ "variable": "email",
+ "label": "email",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "config",
+ "group": "App Configuration",
+ "label": "Admin Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "APP_NAME",
+ "label": "APP_NAME",
+ "schema": {
+ "type": "string",
+ "default": "Gitea",
+ "required": true
+ }
+ },
+ {
+ "variable": "RUN_MODE",
+ "label": "RUN_MODE",
+ "schema": {
+ "type": "string",
+ "default": "prod",
+ "enum": [
+ {
+ "value": "prod",
+ "description": "Production"
+ },
+ {
+ "value": "dev",
+ "description": "Development"
+ },
+ {
+ "value": "test",
+ "description": "Testing"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ALLOWED_HOST_LIST",
+ "label": "ALLOWED_HOST_LIST",
+ "schema": {
+ "type": "string",
+ "default": "127.0.0.1",
+ "required": true
+ }
+ },
+ {
+ "variable": "nodeIP",
+ "label": "Node IP",
+ "description": "Used to generate configuration, when installed without ingress",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/nodeIP"
+ ],
+ "default": "192.168.0.10"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "customConfig",
+ "group": "App Configuration",
+ "label": "Custom Configuration parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "catagoryItem",
+ "label": "Category",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Config Category Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "keys",
+ "label": "Configuration Parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "configItem",
+ "label": "parameter",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Parameter Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "value",
+ "label": "Parameter Value",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 10037,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ssh",
+ "label": "SSH Service",
+ "description": "The SSH service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ssh",
+ "label": "SSH 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": 2222,
+ "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": "data",
+ "label": "App data 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": 1000
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 1000
+ }
+ },
+ {
+ "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": 1000
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "scheduledBackups",
+ "label": "ScheduledBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backupschedule",
+ "label": "BackupSchedule",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "daily-backup",
+ "required": true
+ }
+ },
+ {
+ "variable": "schedule",
+ "label": "schedule",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "0 0 0 * * *"
+ }
+ },
+ {
+ "variable": "backupOwnerReference",
+ "label": "backupOwnerReference",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "self"
+ }
+ },
+ {
+ "variable": "immediate",
+ "label": "immediate",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "suspend",
+ "label": "suspend",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "manualBackups",
+ "label": "manualBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backup",
+ "label": "Backup",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "Self hosted GIT repositories
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/gitea
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image gitea/gitea to v1.21.5@874a8d8 by renovate (#17787)
\n
\n\nChore
\n\n- update helm general non-major by renovate (#17525)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image gitea/gitea to v1.21.4@600f1f1 by renovate (#17304)
\n
\n\nChore
\n\n- update container image common to v17.2.22@e7c9056 by renovate (#16986)
\n
\n"
+ },
+ "17.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/gitea/17.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "definitions/nodeIP",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.21.5_17.3.0",
+ "version": "17.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GIT",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.21.5",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ },
+ {
+ "name": "memcached",
+ "version": "11.2.1",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "memcached.enabled",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Self hosted GIT repositories",
+ "home": "https://truecharts.org/charts/stable/gitea",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png",
+ "keywords": [
+ "git",
+ "issue tracker",
+ "code review",
+ "wiki",
+ "gitea",
+ "gogs"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "gitea",
+ "sources": [
+ "https://gitea.com/gitea/helm-chart",
+ "https://github.com/go-gitea/gitea",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/gitea",
+ "https://hub.docker.com/r/gitea/gitea"
+ ],
+ "type": "application",
+ "version": "17.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": "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": "admin",
+ "group": "App Configuration",
+ "label": "Admin Credentials",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "valid_chars": "^(?!^admin$).*$",
+ "required": true
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "min_length": 8
+ }
+ },
+ {
+ "variable": "email",
+ "label": "email",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "config",
+ "group": "App Configuration",
+ "label": "Admin Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "APP_NAME",
+ "label": "APP_NAME",
+ "schema": {
+ "type": "string",
+ "default": "Gitea",
+ "required": true
+ }
+ },
+ {
+ "variable": "RUN_MODE",
+ "label": "RUN_MODE",
+ "schema": {
+ "type": "string",
+ "default": "prod",
+ "enum": [
+ {
+ "value": "prod",
+ "description": "Production"
+ },
+ {
+ "value": "dev",
+ "description": "Development"
+ },
+ {
+ "value": "test",
+ "description": "Testing"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ALLOWED_HOST_LIST",
+ "label": "ALLOWED_HOST_LIST",
+ "schema": {
+ "type": "string",
+ "default": "127.0.0.1",
+ "required": true
+ }
+ },
+ {
+ "variable": "nodeIP",
+ "label": "Node IP",
+ "description": "Used to generate configuration, when installed without ingress",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/nodeIP"
+ ],
+ "default": "192.168.0.10"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "customConfig",
+ "group": "App Configuration",
+ "label": "Custom Configuration parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "catagoryItem",
+ "label": "Category",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Config Category Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "keys",
+ "label": "Configuration Parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "configItem",
+ "label": "parameter",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Parameter Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "value",
+ "label": "Parameter Value",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 10037,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ssh",
+ "label": "SSH Service",
+ "description": "The SSH service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ssh",
+ "label": "SSH 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": 2222,
+ "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": "data",
+ "label": "App data 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": 1000
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 1000
+ }
+ },
+ {
+ "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": 1000
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "scheduledBackups",
+ "label": "ScheduledBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backupschedule",
+ "label": "BackupSchedule",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "daily-backup",
+ "required": true
+ }
+ },
+ {
+ "variable": "schedule",
+ "label": "schedule",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "0 0 0 * * *"
+ }
+ },
+ {
+ "variable": "backupOwnerReference",
+ "label": "backupOwnerReference",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "self"
+ }
+ },
+ {
+ "variable": "immediate",
+ "label": "immediate",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "suspend",
+ "label": "suspend",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "manualBackups",
+ "label": "manualBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backup",
+ "label": "Backup",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "Self hosted GIT repositories
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/gitea
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image gitea/gitea to v1.21.5@874a8d8 by renovate (#17787)
\n
\n\nChore
\n\n- update helm general non-major by renovate (#17525)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
\n\n- update container image gitea/gitea to v1.21.4@600f1f1 by renovate (#17304)
\n
\n\nChore
\n\n- update container image common to v17.2.22@e7c9056 by renovate (#16986)
\n
\n"
+ },
+ "17.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/gitea/17.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "definitions/nodeIP",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "1.21.5_17.2.0",
+ "version": "17.2.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "23.10.2",
+ "min_scale_version": "23.10.0",
+ "truecharts.org/SCALE-support": "true",
+ "truecharts.org/category": "GIT",
+ "truecharts.org/max_helm_version": "3.14",
+ "truecharts.org/min_helm_version": "3.12",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "1.21.5",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ },
+ {
+ "name": "memcached",
+ "version": "11.1.18",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "memcached.enabled",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Self hosted GIT repositories",
+ "home": "https://truecharts.org/charts/stable/gitea",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png",
+ "keywords": [
+ "git",
+ "issue tracker",
+ "code review",
+ "wiki",
+ "gitea",
+ "gogs"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "gitea",
+ "sources": [
+ "https://gitea.com/gitea/helm-chart",
+ "https://github.com/go-gitea/gitea",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/gitea",
+ "https://hub.docker.com/r/gitea/gitea"
+ ],
+ "type": "application",
+ "version": "17.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": "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": "admin",
+ "group": "App Configuration",
+ "label": "Admin Credentials",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "username",
+ "label": "username",
+ "schema": {
+ "type": "string",
+ "valid_chars": "^(?!^admin$).*$",
+ "required": true
+ }
+ },
+ {
+ "variable": "password",
+ "label": "password",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "private": true,
+ "min_length": 8
+ }
+ },
+ {
+ "variable": "email",
+ "label": "email",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "config",
+ "group": "App Configuration",
+ "label": "Admin Configuration",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "APP_NAME",
+ "label": "APP_NAME",
+ "schema": {
+ "type": "string",
+ "default": "Gitea",
+ "required": true
+ }
+ },
+ {
+ "variable": "RUN_MODE",
+ "label": "RUN_MODE",
+ "schema": {
+ "type": "string",
+ "default": "prod",
+ "enum": [
+ {
+ "value": "prod",
+ "description": "Production"
+ },
+ {
+ "value": "dev",
+ "description": "Development"
+ },
+ {
+ "value": "test",
+ "description": "Testing"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ALLOWED_HOST_LIST",
+ "label": "ALLOWED_HOST_LIST",
+ "schema": {
+ "type": "string",
+ "default": "127.0.0.1",
+ "required": true
+ }
+ },
+ {
+ "variable": "nodeIP",
+ "label": "Node IP",
+ "description": "Used to generate configuration, when installed without ingress",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "$ref": [
+ "definitions/nodeIP"
+ ],
+ "default": "192.168.0.10"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "customConfig",
+ "group": "App Configuration",
+ "label": "Custom Configuration parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "catagoryItem",
+ "label": "Category",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Config Category Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "keys",
+ "label": "Configuration Parameters",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "items": [
+ {
+ "variable": "configItem",
+ "label": "parameter",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "Parameter Name",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ },
+ {
+ "variable": "value",
+ "label": "Parameter Value",
+ "schema": {
+ "type": "string",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 10037,
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "ssh",
+ "label": "SSH Service",
+ "description": "The SSH service",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable the Service",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "type",
+ "label": "Service Type",
+ "description": "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer",
+ "schema": {
+ "type": "string",
+ "default": "LoadBalancer",
+ "enum": [
+ {
+ "value": "LoadBalancer",
+ "description": "LoadBalancer (Expose Ports)"
+ },
+ {
+ "value": "ClusterIP",
+ "description": "ClusterIP (Do Not Expose Ports)"
+ }
+ ]
+ }
+ },
+ {
+ "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": "ssh",
+ "label": "SSH 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": 2222,
+ "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": "data",
+ "label": "App data 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": 1000
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 1000
+ }
+ },
+ {
+ "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": 1000
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "cnpg",
+ "group": "Postgresql",
+ "label": "CloudNative-PG (CNPG)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Postgresql Database",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "hibernate",
+ "label": "Hibernate",
+ "description": "enable to safely hibernate and shutdown the postgresql cluster",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "mode",
+ "label": "Mode",
+ "description": "Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.",
+ "schema": {
+ "type": "string",
+ "default": "standalone",
+ "enum": [
+ {
+ "value": "standalone",
+ "description": "standalone"
+ },
+ {
+ "value": "replica",
+ "description": "replica"
+ },
+ {
+ "value": "recovery",
+ "description": "recovery"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "cluster",
+ "label": "Cluster Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "singleNode",
+ "label": "singleNode",
+ "schema": {
+ "type": "boolean",
+ "default": true,
+ "hidden": true
+ }
+ },
+ {
+ "variable": "storage",
+ "label": "Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "walStorage",
+ "label": "WAL Storage",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "size",
+ "label": "Size",
+ "schema": {
+ "type": "string",
+ "default": "256Gi"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "monitoring",
+ "label": "Monitoring Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enablePodMonitor",
+ "label": "enablePodMonitor",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ {
+ "variable": "disableDefaultQueries",
+ "label": "disableDefaultQueries",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "pooler",
+ "label": "Pooler Settings",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "instances",
+ "label": "Instances",
+ "schema": {
+ "type": "int",
+ "default": 1
+ }
+ },
+ {
+ "variable": "createRO",
+ "label": "Create ReadOnly Instance",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "recovery",
+ "label": "Recovery Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "method",
+ "label": "method",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "object_store"
+ }
+ },
+ {
+ "variable": "backupName",
+ "label": "backupName",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "backups",
+ "label": "Backup Settings (Experimental)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "enabled",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "endpointURL",
+ "label": "endpointURL",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "destinationPath",
+ "label": "destinationPath",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "retentionPolicy",
+ "label": "retentionPolicy",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "30d"
+ }
+ },
+ {
+ "variable": "provider",
+ "label": "provider",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": "s3",
+ "enum": [
+ {
+ "value": "s3",
+ "description": "S3"
+ },
+ {
+ "value": "azure",
+ "description": "Azure"
+ },
+ {
+ "value": "google",
+ "description": "Google"
+ }
+ ]
+ }
+ },
+ {
+ "variable": "s3",
+ "label": "s3",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "s3"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "region",
+ "label": "region",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "accessKey",
+ "label": "accessKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "secretKey",
+ "label": "secretKey",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "azure",
+ "label": "azure (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "azure"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "connectionString",
+ "label": "connectionString",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageAccount",
+ "label": "storageAccount",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageKey",
+ "label": "storageKey",
+ "schema": {
+ "type": "string",
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "default": ""
+ }
+ },
+ {
+ "variable": "storageSasToken",
+ "label": "storageSasToken",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "containerName",
+ "label": "containerName",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "serviceName",
+ "label": "serviceName",
+ "schema": {
+ "type": "string",
+ "default": "blob"
+ }
+ },
+ {
+ "variable": "inheritFromAzureAD",
+ "label": "inheritFromAzureAD",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "google",
+ "label": "google (EXTREMELY EXPERIMENTAL)",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "show_if": [
+ [
+ "provider",
+ "=",
+ "google"
+ ]
+ ],
+ "attrs": [
+ {
+ "variable": "path",
+ "label": "path",
+ "schema": {
+ "type": "string",
+ "default": "/"
+ }
+ },
+ {
+ "variable": "bucket",
+ "label": "bucket",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "gkeEnvironment",
+ "label": "gkeEnvironment",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "variable": "applicationCredentials",
+ "label": "applicationCredentials",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "scheduledBackups",
+ "label": "ScheduledBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backupschedule",
+ "label": "BackupSchedule",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "daily-backup",
+ "required": true
+ }
+ },
+ {
+ "variable": "schedule",
+ "label": "schedule",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "0 0 0 * * *"
+ }
+ },
+ {
+ "variable": "backupOwnerReference",
+ "label": "backupOwnerReference",
+ "schema": {
+ "type": "string",
+ "required": true,
+ "default": "self"
+ }
+ },
+ {
+ "variable": "immediate",
+ "label": "immediate",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "variable": "suspend",
+ "label": "suspend",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "manualBackups",
+ "label": "manualBackups",
+ "schema": {
+ "type": "list",
+ "default": [],
+ "show_if": [
+ [
+ "enabled",
+ "=",
+ true
+ ]
+ ],
+ "items": [
+ {
+ "variable": "backup",
+ "label": "Backup",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "name",
+ "label": "name",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "required": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "variable": "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": "Self hosted GIT repositories
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/gitea
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Major Change to GUI
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4349)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4349)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4317)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4308)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4261)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4182)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4122)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update docker general non-major (#4108)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4071)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major
\n
\n\nChore
\n\n- split addons in smaller templates (#3979)
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3918)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3898)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- update helm chart memcached to v3.0.75 (#3759)
\n
\n\nChore
\n\n- update helm general non-major (#3756)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- update docker general non-major (#3727)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3639)
\n- update helm chart common to v10.5.5 (#3626)
\n
\n\nChore
\n\n- update helm chart common to v10.5.5 (#3626)
\n
\n\nChore
\n\n- update helm general non-major (#3624)
\n
\n\nChore
\n\n- update helm general non-major (#3621)
\n- update helm general non-major (#3619)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3545)
\n
\n\nChore
\n\n- update docker general non-major docker tags (#3518)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3484)
\n
\n\nFix
\n\n- Add WebHook config (#3463)
\n
\n\nChore
\n\n- add documentation checkbox/section to all SCALE Apps
\n- update helm general non-major helm releases (#3456)
\n
\nFix
\n\n- move extraArgs from .Values.controller to .Values (#3447)
\n
\n\nChore
\n\n- update helm general non-major helm releases to v10.4.9 (#3413)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3376)
\n- update docker general non-major (#3356)
\n- replace questions parts with templates (#3402)
\n
\n\nChore
\n\n- update home links (#3291)
\n- update helm general non-major helm releases (#3302)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update docker general non-major (#3295)
\n
\n\nChore
\n\n- update docker general non-major (#3295)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3274)
\n
\n\nChore
\n\n- Bump all charts to generate config and container references due to huge increase of repository
\n- update helm general non-major helm releases (#3268)
\n
\n\nChore
\n\n- Update Readme and Description on SCALE
\n
\n\nFix
\n\n- regenerate catalog and update template
\n
\n\nFix
\n\n- bump to ensure .helmignore is present on all Charts
\n
\n\nChore
\n\n- update docker general non-major (#3157)
\n
\n\nChore
\n\n- update icons (#3156)
\n- bump to cleanup old docs and use correct icon urls
\n
\n\nChore
\n\n- bump to regenerate documentation
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3147)
\n
\n
\n\nChore
\n\n- move icons into the apps folder (#3139)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3113)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3075)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3066)
\n
\n
\n\nChore
\n\n- update helm general non-major Helm releases (#3003)
\n
\n
\n\nGitea
\n\n- change questions.yaml admin password to private (#2991)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2977)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2948)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2943)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2887)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2886)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2854)
\n
\n
\n\nChore
\n\n- update helm general major helm releases (#2804)
\n
\nFix
\n\n- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format.
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- sync all apps persistence configuration and always default to PVC
\n- update helm general non-major helm releases (#2838)
\n
\nFix
\n\n- remove malfunctioning SCALE migration script
\n
\nRefactor
\n\n- BREAKING CHANGE (#2836)
\n
\n
\n\nChore
\n\n- sync all apps persistence configuration and always default to PVC
\n
\nRefactor
\n\n- BREAKING CHANGE (#2836)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2803)
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#2759)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2759)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update docker general non-major (#2695)
\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2649)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2612)
\n
\n
\n\nChore
\n\n- update docker general non-major (#2606)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2605)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2573)
\n
\n
\n\nChore
\n\n- update docker general non-major (#2571)
\n
\n
\n\nChore
\n\n- add missing quote on description (#2515)
\n- update helm general non-major helm releases (#2524)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2480)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2410)
\n
\n
\n\nFix
\n\n- set user and group to 1000 (#2356)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2362)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2361)
\n
\n
\n\nChore
\n\n- Use new repo (#2337)
\n- update helm general non-major helm releases (#2354)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2290)
\n
\n
\n\nChore
\n\n- bump all apps to trigger ci
\n
\n
\n\nChore
\n\n- update docker general non-major
\n
\n
\n\nChore
\n\n- update docker general non-major (#2198)
\n- update docker general non-major (#2196)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2116)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2111)
\n
\n
\n\nChore
\n\n- update docker general non-major (#2046)
\n- Remove
-icon string from icon png's (#2040) \n
\n
\n\nChore
\n\n- remove fixed env from questions.yaml
\n- remove empty env var declaration from questions.yaml
\n- update helm general major helm releases (#2021)
\n
\nFix
\n\n- BREAKING CHANGE Move some env-vars outside of env section (#2010)
\n
\n
\n\nChore
\n\n- rename
web_portal to open (#1957) \n- update helm general non-major helm releases (#1999)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1927)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1901)
\n- remove dups from configmap (#1878)
\n
\n
\n\nFix
\n\n
\n\nChore
\n\n- update docker general non-major (#1876)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1871)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.15.0 (#1859)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1852)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1828)
\n
\n
\n\nChore
\n\n- update docker general non-major docker tags (#1823)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1791)
\n
\n
\n\nFix
\n\n
\n\nChore
\n\n- update helm general non-major helm releases (#1766)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1763)
\n- update helm general non-major helm releases (#1759)
\n
\nFix
\n\n- set additional_attrs: true on all dicts (#1750)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1759)
\n
\nFix
\n\n- set additional_attrs: true on all dicts (#1750)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1732)
\n
\n
\n\nChore
\n\n- update docker general non-major (#1728)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1712)
\n
\nFeat
\n\n- expose capabilities in GUI (#1709)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1704)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1693)
\n
\n
\n\nChore
\n\n- update docker general non-major (#1677)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update docker general non-major (#1646)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1623)
\n
\n
\n\nChore
\n\n- update docker general non-major docker tags (#1609)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1596)
\n
\n
\n\nChore
\n\n- Last patch bump before RC2 branch-off
\n- remove
editable: true as this is the default (#1576) \n
\n
\n\nChore
\n\n- completely remove mountPath reference from GUI (#1572)
\n- update helm general non-major helm releases (#1571)
\n
\n
\n\nChore
\n\n- cleanup questions by removing hidden dicts (#1558)
\n- App-Icon Organization (#1539)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1535)
\n
\n
\n\nChore
\n\n- move incubator apps to stable and bump everything
\n
\n
\n\nChore
\n\n- update general helm non-major helm releases (#1509)
\n
\n
\n\nChore
\n\n- update non-major docker (#1507)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1481)
\n
\n
\n\nChore
\n\n- fix some remaining issues after refactor work
\n
\n
\ngitea-5.0.10 (2021-12-05)
\nChore
\n\n- bump apps to generate security page
\n- move all container references to TCCR (#1448)
\n- ensure container references are prefixed with v
\n- update non-major deps helm releases (#1468)
\n- update non-major deps helm releases (#1453)
\n- update non-major (#1449)
\n- update non-major deps helm releases (#1471)
\n- update non-major deps helm releases (#1432)
\n
\nFix
\n\n- fix typo in theme selection (#1428)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1468)
\n
\n
\n\nChore
\n\n- bump apps to generate security page
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1453)
\n
\n
\n\nChore
\n\n- ensure container references are prefixed with v
\n- move all container references to TCCR (#1448)
\n- update non-major (#1449)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1432)
\n
\nFix
\n\n- correct some ports mistakes (#1416)
\n- move conflicting ports to 10xxx range (#1415)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1386)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1383)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1345)
\n
\n
\n\nChore
\n\n- bump postgresql again
\n
\n
\n\nChore
\n\n- bump postgresql on some Apps
\n
\n
\n\nChore
\n\n- persistence cleanup and small bugfixes (#1329)
\n- update non-major deps helm releases (#1338)
\n
\n
\n\nChore
\n\n- fixes around the GUI refactor (#1316)
\n- move port above advanced in GUI (#1326)
\n- clean up Chart.yaml (#1322)
\n- update non-major deps helm releases (#1328)
\n
\n
\n\nFeat
\n\n- move gitea to our own memcached chart (#1313)
\n
\nFix
\n\n- Allow spaces in paths (#1306)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1297)
\n
\n
\n\n
\n\nFix
\n\n- Correctly enable ports by default on some more Apps
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1295)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1291)
\n
\nChore
\n\n- Simplify GUI for deployment, persistence and securityContext (#1289)
\n
\nFeat
\n\n- Simplify the Services GUI (#1290)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1267)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1264)
\n
\n
\n\nChore
\n\n- update non-major (#1263)
\n
\n
\n\nChore
\n\n- update helm chart postgresql to v5.1.4 (#1249)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1247)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1245)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.3.15 (#1240)
\n
\n
\n\nChore
\n\n- update helm chart postgresql to v5 (#1234)
\n- update non-major (#1232)
\n- update helm chart postgresql to v4.1.0 (#1237)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases
\n
\n
\n\nChore
\n\n- Adapt for TrueNAS SCALE RC1
\n
\n
\n\nChore
\n\n- bump apps, remove duplicates and move incubator to stable for RC1
\n
\n
\n\nChore
\n\n- update helm chart postgresql to v4 (#1214)
\n
\nFix
\n\n- use correct PVC storageClass when using postgresql as a dependency on SCALE (#1212)
\n
\n
\n\nChore
\n\n- bump versions to rerelease and fix icons
\n
\n
\n\nChore
\n\n- update helm chart common to v8.3.13 (#1184)
\n
\n
\n\nChange
\n\n- Project-Eclipse 3, Automatically generate item.yaml (#1178)
\n
\nChore
\n\n- Project-Eclipse 5, move app-readme to automatic generation script (#1181)
\n- update helm chart memcached to v5.15.6 (#1179)
\n
\nFeat
\n\n- Project-Eclipse 4, Add App grading annotations to Chart.yaml (#1180)
\n
\nRefactor
\n\n- Project Eclipse Part 6, move questions.yaml to root App folder (#1182)
\n
\n
\n\nChore
\n\n- Project-Eclipse part 2, adapting and cleaning changelog (#1173)
\n- update helm chart postgresql to v3.0.20 (#1177)
\n
\n
\n\nFix
\n\n- fix previous SCALE bugfix not correctly being applied
\n
\n
\n\nFix
\n\n- Solve issues regarding ix_values.yaml not containing the image and tag definitions. (#1176)
\n
\n
\n\nRefactor
\n\n- Project Eclipse - part 1 - remove ix_values.yaml (#1168)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.3.10 (#1160)
\n
\nFix
\n\n- force users using correct / prefix for mounPath (#1156)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1133)
\n
\n
\n\nChore
\n\n- update helm chart postgresql to v3.0.15 (#1127)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1126)
\n
\n
\n\nChore
\n\n- update non-major (#1122)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1123)
\n
\n
\n\n
\n\nChore
\n\n- update non-major deps helm releases (#1099)
\n
\n
\n\nChore
\n\n- update non-major (#1098)
\n
\n
\n\n
\n\n
\n\n
\n\n
\n\n
\ngitea-0.0.1 (2021-10-01)
"
+ }
+}
\ No newline at end of file
diff --git a/stable/gitea/item.yaml b/stable/gitea/item.yaml
new file mode 100644
index 0000000..5b723d3
--- /dev/null
+++ b/stable/gitea/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png
+categories:
+ - GIT
+screenshots: []
diff --git a/stable/jellyfin/17.2.0/.helmignore b/stable/jellyfin/17.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/jellyfin/17.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/jellyfin/17.2.0/CHANGELOG.md b/stable/jellyfin/17.2.0/CHANGELOG.md
new file mode 100644
index 0000000..269fe73
--- /dev/null
+++ b/stable/jellyfin/17.2.0/CHANGELOG.md
@@ -0,0 +1,1396 @@
+---
+title: Changelog
+---
+
+## [jellyfin-12.0.0](https://github.com/truecharts/charts/compare/jellyfin-11.0.46...jellyfin-12.0.0) (2022-11-10)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Major Change to GUI
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+### Fix
+
+- change container config label
+
+## [jellyfin-11.0.49](https://github.com/truecharts/charts/compare/jellyfin-11.0.46...jellyfin-11.0.49) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [jellyfin-11.0.48](https://github.com/truecharts/charts/compare/jellyfin-11.0.46...jellyfin-11.0.48) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [jellyfin-11.0.48](https://github.com/truecharts/charts/compare/jellyfin-11.0.46...jellyfin-11.0.48) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [jellyfin-11.0.48](https://github.com/truecharts/charts/compare/jellyfin-11.0.46...jellyfin-11.0.48) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [jellyfin-11.0.47](https://github.com/truecharts/charts/compare/jellyfin-11.0.46...jellyfin-11.0.47) (2022-11-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [jellyfin-11.0.47](https://github.com/truecharts/charts/compare/jellyfin-11.0.46...jellyfin-11.0.47) (2022-11-06)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [jellyfin-11.0.46](https://github.com/truecharts/charts/compare/jellyfin-11.0.45...jellyfin-11.0.46) (2022-11-06)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317))
+
+## [jellyfin-11.0.45](https://github.com/truecharts/charts/compare/jellyfin-11.0.44...jellyfin-11.0.45) (2022-11-05)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308))
+
+## [jellyfin-11.0.44](https://github.com/truecharts/charts/compare/jellyfin-11.0.43...jellyfin-11.0.44) (2022-11-02)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261))
+- update docker general non-major ([#4280](https://github.com/truecharts/charts/issues/4280))
+
+## [jellyfin-11.0.43](https://github.com/truecharts/charts/compare/jellyfin-11.0.42...jellyfin-11.0.43) (2022-10-29)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update docker general non-major ([#4230](https://github.com/truecharts/charts/issues/4230))
+
+## [jellyfin-11.0.42](https://github.com/truecharts/charts/compare/jellyfin-11.0.41...jellyfin-11.0.42) (2022-10-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182))
+
+## [jellyfin-11.0.41](https://github.com/truecharts/charts/compare/jellyfin-11.0.40...jellyfin-11.0.41) (2022-10-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122))
+
+## [jellyfin-11.0.40](https://github.com/truecharts/charts/compare/jellyfin-11.0.39...jellyfin-11.0.40) (2022-10-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071))
+
+## [jellyfin-11.0.39](https://github.com/truecharts/charts/compare/jellyfin-11.0.38...jellyfin-11.0.39) (2022-10-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major
+
+## [jellyfin-11.0.39](https://github.com/truecharts/charts/compare/jellyfin-11.0.38...jellyfin-11.0.39) (2022-10-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major
+
+## [jellyfin-11.0.38](https://github.com/truecharts/charts/compare/jellyfin-11.0.37...jellyfin-11.0.38) (2022-10-05)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979))
+- update helm general non-major
+
+## [jellyfin-11.0.37](https://github.com/truecharts/charts/compare/jellyfin-11.0.36...jellyfin-11.0.37) (2022-09-27)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918))
+
+## [jellyfin-11.0.36](https://github.com/truecharts/charts/compare/jellyfin-11.0.35...jellyfin-11.0.36) (2022-09-26)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update docker general non-major ([#3906](https://github.com/truecharts/charts/issues/3906))
+
+## [jellyfin-11.0.35](https://github.com/truecharts/charts/compare/jellyfin-11.0.34...jellyfin-11.0.35) (2022-09-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-22)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-21)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-21)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-20)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-20)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-17)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-18)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-16)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-16)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-15)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.34](https://github.com/truecharts/charts/compare/jellyfin-11.0.33...jellyfin-11.0.34) (2022-09-15)
+
+### Chore
+
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [jellyfin-11.0.33](https://github.com/truecharts/charts/compare/jellyfin-11.0.32...jellyfin-11.0.33) (2022-09-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [jellyfin-11.0.33](https://github.com/truecharts/charts/compare/jellyfin-11.0.32...jellyfin-11.0.33) (2022-09-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [jellyfin-11.0.33](https://github.com/truecharts/charts/compare/jellyfin-11.0.32...jellyfin-11.0.33) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [jellyfin-11.0.33](https://github.com/truecharts/charts/compare/jellyfin-11.0.32...jellyfin-11.0.33) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [jellyfin-11.0.33](https://github.com/truecharts/charts/compare/jellyfin-11.0.32...jellyfin-11.0.33) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [jellyfin-11.0.33](https://github.com/truecharts/charts/compare/jellyfin-11.0.32...jellyfin-11.0.33) (2022-09-11)
+
+### Chore
+
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [jellyfin-11.0.32](https://github.com/truecharts/charts/compare/jellyfin-11.0.30...jellyfin-11.0.32) (2022-08-30)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639))
+- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626))
+
+## [jellyfin-11.0.31](https://github.com/truecharts/charts/compare/jellyfin-11.0.30...jellyfin-11.0.31) (2022-08-30)
+
+### Chore
+
+- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626))
+
+## [jellyfin-11.0.30](https://github.com/truecharts/charts/compare/jellyfin-11.0.29...jellyfin-11.0.30) (2022-08-29)
+
+### Chore
+
+- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619))
+
+## [jellyfin-11.0.29](https://github.com/truecharts/charts/compare/jellyfin-11.0.28...jellyfin-11.0.29) (2022-08-23)
+
+### Chore
+
+- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545))
+
+## [jellyfin-11.0.28](https://github.com/truecharts/charts/compare/jellyfin-11.0.27...jellyfin-11.0.28) (2022-08-17)
+
+### Chore
+
+- update docker general non-major ([#3478](https://github.com/truecharts/charts/issues/3478))
+
+## [jellyfin-11.0.27](https://github.com/truecharts/charts/compare/jellyfin-11.0.26...jellyfin-11.0.27) (2022-08-12)
+
+### Chore
+
+- add documentation checkbox/section to all SCALE Apps
+- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456))
+
+### Fix
+
+- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447))
+
+## [jellyfin-11.0.26](https://github.com/truecharts/charts/compare/jellyfin-11.0.25...jellyfin-11.0.26) (2022-08-09)
+
+### Chore
+
+- update docker general non-major ([#3377](https://github.com/truecharts/charts/issues/3377))
+
+## [jellyfin-11.0.25](https://github.com/truecharts/charts/compare/jellyfin-11.0.24...jellyfin-11.0.25) (2022-08-08)
+
+### Chore
+
+- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376))
+- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402))
+
+## [jellyfin-11.0.24](https://github.com/truecharts/apps/compare/jellyfin-11.0.23...jellyfin-11.0.24) (2022-07-26)
+
+### Chore
+
+- update home links ([#3291](https://github.com/truecharts/apps/issues/3291))
+- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302))
+
+## [jellyfin-11.0.23](https://github.com/truecharts/apps/compare/jellyfin-11.0.22...jellyfin-11.0.23) (2022-07-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295))
+
+## [jellyfin-11.0.23](https://github.com/truecharts/apps/compare/jellyfin-11.0.22...jellyfin-11.0.23) (2022-07-25)
+
+### Chore
+
+- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295))
+
+## [jellyfin-11.0.22](https://github.com/truecharts/apps/compare/jellyfin-11.0.21...jellyfin-11.0.22) (2022-07-23)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [jellyfin-11.0.22](https://github.com/truecharts/apps/compare/jellyfin-11.0.21...jellyfin-11.0.22) (2022-07-23)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [jellyfin-11.0.22](https://github.com/truecharts/apps/compare/jellyfin-11.0.21...jellyfin-11.0.22) (2022-07-23)
+
+### Chore
+
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [jellyfin-11.0.21](https://github.com/truecharts/apps/compare/jellyfin-11.0.19...jellyfin-11.0.21) (2022-07-22)
+
+### Chore
+
+- Bump all charts to generate config and container references due to huge increase of repository
+- update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268))
+
+## [jellyfin-11.0.19](https://github.com/truecharts/apps/compare/jellyfin-11.0.18...jellyfin-11.0.19) (2022-07-19)
+
+### Chore
+
+- Update Readme and Description on SCALE
+
+## [jellyfin-11.0.18](https://github.com/truecharts/apps/compare/jellyfin-11.0.17...jellyfin-11.0.18) (2022-07-14)
+
+### Fix
+
+- regenerate catalog and update template
+
+## [jellyfin-11.0.17](https://github.com/truecharts/apps/compare/jellyfin-11.0.15...jellyfin-11.0.17) (2022-07-14)
+
+### Fix
+
+- bump to ensure .helmignore is present on all Charts
+
+## [jellyfin-11.0.15](https://github.com/truecharts/apps/compare/jellyfin-11.0.13...jellyfin-11.0.15) (2022-07-12)
+
+### Chore
+
+- update icons ([#3156](https://github.com/truecharts/apps/issues/3156))
+- bump to cleanup old docs and use correct icon urls
+
+## [jellyfin-11.0.13](https://github.com/truecharts/apps/compare/jellyfin-11.0.12...jellyfin-11.0.13) (2022-07-12)
+
+### Chore
+
+- bump to regenerate documentation
+
+
+
+### [jellyfin-11.0.12](https://github.com/truecharts/apps/compare/jellyfin-11.0.11...jellyfin-11.0.12) (2022-07-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147))
+
+
+
+### [jellyfin-11.0.11](https://github.com/truecharts/apps/compare/jellyfin-11.0.10...jellyfin-11.0.11) (2022-07-11)
+
+#### Chore
+
+- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139))
+
+
+
+### [jellyfin-11.0.10](https://github.com/truecharts/apps/compare/jellyfin-11.0.9...jellyfin-11.0.10) (2022-07-09)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113))
+
+
+
+### [jellyfin-11.0.9](https://github.com/truecharts/apps/compare/jellyfin-11.0.8...jellyfin-11.0.9) (2022-07-04)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066))
+
+
+
+### [jellyfin-11.0.8](https://github.com/truecharts/apps/compare/jellyfin-11.0.7...jellyfin-11.0.8) (2022-06-27)
+
+#### Chore
+
+- update docker general non-major ([#2999](https://github.com/truecharts/apps/issues/2999))
+
+
+
+### [jellyfin-11.0.7](https://github.com/truecharts/apps/compare/jellyfin-11.0.6...jellyfin-11.0.7) (2022-06-25)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977))
+
+
+
+### [jellyfin-11.0.6](https://github.com/truecharts/apps/compare/jellyfin-11.0.5...jellyfin-11.0.6) (2022-06-22)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948))
+
+
+
+### [jellyfin-11.0.5](https://github.com/truecharts/apps/compare/jellyfin-11.0.4...jellyfin-11.0.5) (2022-06-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943))
+
+
+
+### [jellyfin-11.0.4](https://github.com/truecharts/apps/compare/jellyfin-11.0.3...jellyfin-11.0.4) (2022-06-14)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886))
+
+
+
+### [jellyfin-11.0.3](https://github.com/truecharts/apps/compare/jellyfin-11.0.2...jellyfin-11.0.3) (2022-06-11)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854))
+- update docker general non-major ([#2856](https://github.com/truecharts/apps/issues/2856))
+
+
+
+### [jellyfin-11.0.2](https://github.com/truecharts/apps/compare/jellyfin-11.0.1...jellyfin-11.0.2) (2022-06-07)
+
+#### Fix
+
+- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format.
+
+
+
+### [jellyfin-11.0.1](https://github.com/truecharts/apps/compare/jellyfin-10.0.19...jellyfin-11.0.1) (2022-06-07)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- sync all apps persistence configuration and always default to PVC
+
+#### Fix
+
+- remove malfunctioning SCALE migration script
+
+#### Refactor
+
+- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836))
+
+
+
+### [jellyfin-11.0.0](https://github.com/truecharts/apps/compare/jellyfin-10.0.19...jellyfin-11.0.0) (2022-06-07)
+
+#### Chore
+
+- sync all apps persistence configuration and always default to PVC
+
+#### Refactor
+
+- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836))
+
+
+
+### [jellyfin-10.0.19](https://github.com/truecharts/apps/compare/jellyfin-10.0.18...jellyfin-10.0.19) (2022-05-31)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803))
+
+
+
+### [jellyfin-10.0.18](https://github.com/truecharts/apps/compare/jellyfin-10.0.17...jellyfin-10.0.18) (2022-05-26)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759))
+
+
+
+### [jellyfin-10.0.18](https://github.com/truecharts/apps/compare/jellyfin-10.0.17...jellyfin-10.0.18) (2022-05-26)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759))
+
+
+
+### [jellyfin-10.0.17](https://github.com/truecharts/apps/compare/jellyfin-10.0.16...jellyfin-10.0.17) (2022-05-24)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [jellyfin-10.0.16](https://github.com/truecharts/apps/compare/jellyfin-10.0.15...jellyfin-10.0.16) (2022-05-17)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases
+
+
+
+### [jellyfin-10.0.16](https://github.com/truecharts/apps/compare/jellyfin-10.0.15...jellyfin-10.0.16) (2022-05-17)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [jellyfin-10.0.15](https://github.com/truecharts/apps/compare/jellyfin-10.0.14...jellyfin-10.0.15) (2022-05-17)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [jellyfin-10.0.14](https://github.com/truecharts/apps/compare/jellyfin-10.0.13...jellyfin-10.0.14) (2022-05-10)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649))
+
+
+
+### [jellyfin-10.0.13](https://github.com/truecharts/apps/compare/jellyfin-10.0.12...jellyfin-10.0.13) (2022-05-05)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612))
+
+
+
+### [jellyfin-10.0.12](https://github.com/truecharts/apps/compare/jellyfin-10.0.11...jellyfin-10.0.12) (2022-04-26)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573))
+
+
+
+### [jellyfin-10.0.11](https://github.com/truecharts/apps/compare/jellyfin-10.0.10...jellyfin-10.0.11) (2022-04-20)
+
+#### Chore
+
+- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515))
+- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524))
+
+
+
+### [jellyfin-10.0.10](https://github.com/truecharts/apps/compare/jellyfin-10.0.9...jellyfin-10.0.10) (2022-04-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480))
+
+
+
+### [jellyfin-10.0.9](https://github.com/truecharts/apps/compare/jellyfin-10.0.8...jellyfin-10.0.9) (2022-04-03)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410))
+
+
+
+### [jellyfin-10.0.8](https://github.com/truecharts/apps/compare/jellyfin-10.0.7...jellyfin-10.0.8) (2022-03-31)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361))
+
+
+
+### [jellyfin-10.0.7](https://github.com/truecharts/apps/compare/jellyfin-10.0.6...jellyfin-10.0.7) (2022-03-30)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354))
+
+
+
+### [jellyfin-10.0.6](https://github.com/truecharts/apps/compare/jellyfin-10.0.5...jellyfin-10.0.6) (2022-03-26)
+
+#### Chore
+
+- bump all apps to trigger ci
+
+
+
+### [jellyfin-10.0.1](https://github.com/truecharts/apps/compare/jellyfin-10.0.0...jellyfin-10.0.1) (2022-03-07)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111))
+- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040))
+
+
+
+### [jellyfin-10.0.0](https://github.com/truecharts/apps/compare/jellyfin-9.0.44...jellyfin-10.0.0) (2022-03-03)
+
+#### Chore
+
+- remove fixed env from questions.yaml
+- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021))
+
+#### Fix
+
+- BREAKING CHANGE Move some env-vars outside of env section ([#2010](https://github.com/truecharts/apps/issues/2010))
+
+
+
+### [jellyfin-9.0.44](https://github.com/truecharts/apps/compare/jellyfin-9.0.43...jellyfin-9.0.44) (2022-03-02)
+
+#### Chore
+
+- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957))
+- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999))
+
+
+
+### [jellyfin-9.0.43](https://github.com/truecharts/apps/compare/jellyfin-9.0.42...jellyfin-9.0.43) (2022-02-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927))
+
+
+
+### [jellyfin-9.0.42](https://github.com/truecharts/apps/compare/jellyfin-9.0.41...jellyfin-9.0.42) (2022-02-15)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901))
+
+
+
+### [jellyfin-9.0.41](https://github.com/truecharts/apps/compare/jellyfin-9.0.40...jellyfin-9.0.41) (2022-02-08)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871))
+
+
+
+### [jellyfin-9.0.40](https://github.com/truecharts/apps/compare/jellyfin-9.0.39...jellyfin-9.0.40) (2022-02-06)
+
+#### Chore
+
+- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859))
+
+
+
+### [jellyfin-9.0.39](https://github.com/truecharts/apps/compare/jellyfin-9.0.38...jellyfin-9.0.39) (2022-02-06)
+
+#### Chore
+
+- Mount cache to emptyDir and add PublishedServerURL var ([#1853](https://github.com/truecharts/apps/issues/1853))
+
+
+
+### [jellyfin-9.0.38](https://github.com/truecharts/apps/compare/jellyfin-9.0.37...jellyfin-9.0.38) (2022-02-05)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852))
+
+
+
+### [jellyfin-9.0.37](https://github.com/truecharts/apps/compare/jellyfin-9.0.36...jellyfin-9.0.37) (2022-02-02)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828))
+
+
+
+### [jellyfin-9.0.36](https://github.com/truecharts/apps/compare/jellyfin-9.0.35...jellyfin-9.0.36) (2022-01-25)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791))
+
+
+
+### [jellyfin-9.0.35](https://github.com/truecharts/apps/compare/jellyfin-9.0.34...jellyfin-9.0.35) (2022-01-22)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766))
+
+
+
+### [jellyfin-9.0.34](https://github.com/truecharts/apps/compare/jellyfin-9.0.33...jellyfin-9.0.34) (2022-01-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759))
+
+#### Fix
+
+- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750))
+
+
+
+### [jellyfin-9.0.33](https://github.com/truecharts/apps/compare/jellyfin-9.0.32...jellyfin-9.0.33) (2022-01-18)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1732](https://github.com/truecharts/apps/issues/1732))
+
+
+
+### [jellyfin-9.0.32](https://github.com/truecharts/apps/compare/jellyfin-9.0.31...jellyfin-9.0.32) (2022-01-13)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712))
+
+#### Feat
+
+- expose capabilities in GUI ([#1709](https://github.com/truecharts/apps/issues/1709))
+
+
+
+### [jellyfin-9.0.31](https://github.com/truecharts/apps/compare/jellyfin-9.0.30...jellyfin-9.0.31) (2022-01-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704))
+
+
+
+### [jellyfin-9.0.30](https://github.com/truecharts/apps/compare/jellyfin-9.0.29...jellyfin-9.0.30) (2022-01-11)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693))
+
+
+
+### [jellyfin-9.0.29](https://github.com/truecharts/apps/compare/jellyfin-9.0.28...jellyfin-9.0.29) (2022-01-04)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [jellyfin-9.0.28](https://github.com/truecharts/apps/compare/jellyfin-9.0.27...jellyfin-9.0.28) (2021-12-28)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623))
+
+
+
+### [jellyfin-9.0.27](https://github.com/truecharts/apps/compare/jellyfin-9.0.26...jellyfin-9.0.27) (2021-12-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596))
+
+
+
+### [jellyfin-9.0.26](https://github.com/truecharts/apps/compare/jellyfin-9.0.25...jellyfin-9.0.26) (2021-12-19)
+
+#### Chore
+
+- Last patch bump before RC2 branch-off
+- remove `editable: true` as this is the default ([#1576](https://github.com/truecharts/apps/issues/1576))
+
+
+
+### [jellyfin-9.0.25](https://github.com/truecharts/apps/compare/jellyfin-9.0.24...jellyfin-9.0.25) (2021-12-19)
+
+#### Chore
+
+- completely remove mountPath reference from GUI ([#1572](https://github.com/truecharts/apps/issues/1572))
+- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571))
+
+
+
+### [jellyfin-9.0.24](https://github.com/truecharts/apps/compare/jellyfin-9.0.23...jellyfin-9.0.24) (2021-12-18)
+
+#### Chore
+
+- cleanup questions by removing hidden dicts ([#1558](https://github.com/truecharts/apps/issues/1558))
+- App-Icon Organization ([#1539](https://github.com/truecharts/apps/issues/1539))
+
+
+
+### [jellyfin-9.0.23](https://github.com/truecharts/apps/compare/jellyfin-9.0.22...jellyfin-9.0.23) (2021-12-14)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535))
+
+
+
+### [jellyfin-9.0.22](https://github.com/truecharts/apps/compare/jellyfin-9.0.21...jellyfin-9.0.22) (2021-12-13)
+
+#### Chore
+
+- move incubator apps to stable and bump everything
+
+
+
+### [jellyfin-9.0.21](https://github.com/truecharts/apps/compare/jellyfin-9.0.20...jellyfin-9.0.21) (2021-12-11)
+
+#### Chore
+
+- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509))
+
+
+
+### [jellyfin-9.0.20](https://github.com/truecharts/apps/compare/jellyfin-9.0.19...jellyfin-9.0.20) (2021-12-11)
+
+#### Chore
+
+- update non-major docker ([#1507](https://github.com/truecharts/apps/issues/1507))
+
+
+
+### [jellyfin-9.0.19](https://github.com/truecharts/apps/compare/jellyfin-9.0.18...jellyfin-9.0.19) (2021-12-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481))
+
+
+
+### jellyfin-9.0.18 (2021-12-05)
+
+#### Chore
+
+- bump apps to generate security page
+- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448))
+- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471))
+- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468))
+- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453))
+- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449))
+- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432))
+
+#### Fix
+
+- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428))
+
+
+
+### [jellyfin-9.0.17](https://github.com/truecharts/apps/compare/jellyfin-9.0.16...jellyfin-9.0.17) (2021-12-05)
+
+#### Chore
+
+- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468))
+
+
+
+### [jellyfin-9.0.16](https://github.com/truecharts/apps/compare/jellyfin-9.0.15...jellyfin-9.0.16) (2021-12-04)
+
+#### Chore
+
+- bump apps to generate security page
+
+
+
+### [jellyfin-9.0.15](https://github.com/truecharts/apps/compare/jellyfin-9.0.14...jellyfin-9.0.15) (2021-12-04)
+
+#### Chore
+
+- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453))
+
+
+
+### [jellyfin-9.0.14](https://github.com/truecharts/apps/compare/jellyfin-9.0.13...jellyfin-9.0.14) (2021-12-03)
+
+#### Chore
+
+- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448))
+- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449))
+
+
+
+### [jellyfin-9.0.13](https://github.com/truecharts/apps/compare/jellyfin-9.0.12...jellyfin-9.0.13) (2021-11-30)
+
+#### Chore
+
+- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432))
+
+
+
+### [jellyfin-9.0.12](https://github.com/truecharts/apps/compare/jellyfin-9.0.11...jellyfin-9.0.12) (2021-11-23)
+
+#### Chore
+
+- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386))
+
+
+
+### [jellyfin-9.0.11](https://github.com/truecharts/apps/compare/jellyfin-9.0.10...jellyfin-9.0.11) (2021-11-22)
+
+#### Chore
+
+- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383))
+
+
+
+### [jellyfin-9.0.10](https://github.com/truecharts/apps/compare/jellyfin-9.0.9...jellyfin-9.0.10) (2021-11-16)
+
+#### Chore
+
+- update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345))
+
+
+
+### [jellyfin-9.0.9](https://github.com/truecharts/apps/compare/jellyfin-9.0.8...jellyfin-9.0.9) (2021-11-15)
+
+#### Chore
+
+- persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329))
+- update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338))
+
+
+
+### [jellyfin-9.0.8](https://github.com/truecharts/apps/compare/jellyfin-9.0.7...jellyfin-9.0.8) (2021-11-14)
+
+#### Chore
+
+- fixes around the GUI refactor ([#1316](https://github.com/truecharts/apps/issues/1316))
+- move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326))
+- clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322))
+- update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328))
+
+#### Fix
+
+- split udp and tcp ports ([#1321](https://github.com/truecharts/apps/issues/1321))
+- Allow spaces in paths ([#1306](https://github.com/truecharts/apps/issues/1306))
+
+
+
+### [jellyfin-9.0.7](https://github.com/truecharts/apps/compare/jellyfin-9.0.6...jellyfin-9.0.7) (2021-11-09)
+
+#### Chore
+
+- update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297))
+
+
+
+### [jellyfin-9.0.6](https://github.com/truecharts/apps/compare/jellyfin-9.0.5...jellyfin-9.0.6) (2021-11-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295))
+
+
+
+### [jellyfin-9.0.5](https://github.com/truecharts/apps/compare/jellyfin-9.0.4...jellyfin-9.0.5) (2021-11-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291))
+
+#### Chore
+
+- Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289))
+
+#### Feat
+
+- Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290))
+
+
+
+### [jellyfin-9.0.4](https://github.com/truecharts/apps/compare/jellyfin-9.0.3...jellyfin-9.0.4) (2021-11-02)
+
+#### Chore
+
+- update non-major deps helm releases ([#1267](https://github.com/truecharts/apps/issues/1267))
+
+
+
+### [jellyfin-9.0.3](https://github.com/truecharts/apps/compare/jellyfin-9.0.2...jellyfin-9.0.3) (2021-11-01)
+
+#### Chore
+
+- update non-major deps helm releases ([#1264](https://github.com/truecharts/apps/issues/1264))
+
+
+
+### [jellyfin-9.0.2](https://github.com/truecharts/apps/compare/jellyfin-9.0.1...jellyfin-9.0.2) (2021-10-26)
+
+#### Chore
+
+- update non-major deps helm releases ([#1245](https://github.com/truecharts/apps/issues/1245))
+
+
+
+### [jellyfin-9.0.1](https://github.com/truecharts/apps/compare/jellyfin-9.0.0...jellyfin-9.0.1) (2021-10-26)
+
+#### Chore
+
+- update helm chart common to v8.3.15 ([#1240](https://github.com/truecharts/apps/issues/1240))
+
+
+
+### [jellyfin-9.0.0](https://github.com/truecharts/apps/compare/jellyfin-8.0.16...jellyfin-9.0.0) (2021-10-25)
+
+#### Chore
+
+- Adapt for TrueNAS SCALE RC1
+
+
+
+### [jellyfin-8.0.16](https://github.com/truecharts/apps/compare/jellyfin-8.0.15...jellyfin-8.0.16) (2021-10-20)
+
+#### Chore
+
+- bump apps, remove duplicates and move incubator to stable for RC1
+
+
+
+### [jellyfin-8.0.13](https://github.com/truecharts/apps/compare/jellyfin-8.0.12...jellyfin-8.0.13) (2021-10-20)
+
+#### Chore
+
+- bump versions to rerelease and fix icons
+
+
+
+### [jellyfin-8.0.12](https://github.com/truecharts/apps/compare/jellyfin-8.0.11...jellyfin-8.0.12) (2021-10-19)
+
+#### Change
+
+- Project-Eclipse 3, Automatically generate item.yaml ([#1178](https://github.com/truecharts/apps/issues/1178))
+
+#### Chore
+
+- Project-Eclipse 5, move app-readme to automatic generation script ([#1181](https://github.com/truecharts/apps/issues/1181))
+- Project-Eclipse part 2, adapting and cleaning changelog ([#1173](https://github.com/truecharts/apps/issues/1173))
+- update helm chart common to v8.3.13 ([#1184](https://github.com/truecharts/apps/issues/1184))
+
+#### Feat
+
+- Project-Eclipse 4, Add App grading annotations to Chart.yaml ([#1180](https://github.com/truecharts/apps/issues/1180))
+
+#### Refactor
+
+- Project Eclipse Part 6, move questions.yaml to root App folder ([#1182](https://github.com/truecharts/apps/issues/1182))
+
+
+
+### [jellyfin-8.0.11](https://github.com/truecharts/apps/compare/jellyfin-8.0.10...jellyfin-8.0.11) (2021-10-19)
+
+#### Fix
+
+- fix previous SCALE bugfix not correctly being applied
+
+
+
+### [jellyfin-8.0.10](https://github.com/truecharts/apps/compare/jellyfin-8.0.9...jellyfin-8.0.10) (2021-10-19)
+
+#### Fix
+
+- Solve issues regarding ix_values.yaml not containing the image and tag definitions. ([#1176](https://github.com/truecharts/apps/issues/1176))
+
+
+
+### [jellyfin-8.0.9](https://github.com/truecharts/apps/compare/jellyfin-8.0.8...jellyfin-8.0.9) (2021-10-18)
+
+#### Chore
+
+- Add description on persistence ([#1172](https://github.com/truecharts/apps/issues/1172))
+
+#### Refactor
+
+- Project Eclipse - part 1 - remove ix_values.yaml ([#1168](https://github.com/truecharts/apps/issues/1168))
+
+
+
+### [jellyfin-8.0.8](https://github.com/truecharts/apps/compare/jellyfin-8.0.7...jellyfin-8.0.8) (2021-10-17)
+
+#### Chore
+
+- update helm chart common to v8.3.10 ([#1160](https://github.com/truecharts/apps/issues/1160))
+
+#### Fix
+
+- force users using correct / prefix for mounPath ([#1156](https://github.com/truecharts/apps/issues/1156))
+
+
+
+### [jellyfin-8.0.7](https://github.com/truecharts/apps/compare/jellyfin-8.0.6...jellyfin-8.0.7) (2021-10-13)
+
+#### Chore
+
+- update non-major deps helm releases ([#1133](https://github.com/truecharts/apps/issues/1133))
+
+
+
+### [jellyfin-8.0.6](https://github.com/truecharts/apps/compare/jellyfin-8.0.5...jellyfin-8.0.6) (2021-10-12)
+
+#### Chore
+
+- update non-major deps helm releases ([#1126](https://github.com/truecharts/apps/issues/1126))
+
+
+
+### [jellyfin-8.0.5](https://github.com/truecharts/apps/compare/jellyfin-8.0.4...jellyfin-8.0.5) (2021-10-12)
+
+#### Chore
+
+- update non-major deps helm releases ([#1123](https://github.com/truecharts/apps/issues/1123))
+
+
+
+### [jellyfin-8.0.4](https://github.com/truecharts/apps/compare/jellyfin-8.0.3...jellyfin-8.0.4) (2021-10-05)
+
+#### Chore
+
+- update non-major deps helm releases ([#1099](https://github.com/truecharts/apps/issues/1099))
+
+
+
+### [jellyfin-8.0.3](https://github.com/truecharts/apps/compare/jellyfin-8.0.2...jellyfin-8.0.3) (2021-09-29)
+
+#### Chore
+
+- update helm chart common to v8.0.13 ([#1060](https://github.com/truecharts/apps/issues/1060))
+
+
+
+### [jellyfin-8.0.1](https://github.com/truecharts/apps/compare/jellyfin-8.0.0...jellyfin-8.0.1) (2021-09-26)
+
+
+
+### [jellyfin-8.0.0](https://github.com/truecharts/apps/compare/jellyfin-7.0.2...jellyfin-8.0.0) (2021-09-26)
+
+
+
+### [jellyfin-7.0.2](https://github.com/truecharts/apps/compare/jellyfin-7.0.1...jellyfin-7.0.2) (2021-09-21)
+
+#### Chore
+
+- update non-major deps helm releases ([#1014](https://github.com/truecharts/apps/issues/1014))
+
+
+
+### [jellyfin-7.0.1](https://github.com/truecharts/apps/compare/jellyfin-6.11.16...jellyfin-7.0.1) (2021-09-13)
+
+#### Chore
+
+- move more dockerhub containers to GHCR mirror ([#958](https://github.com/truecharts/apps/issues/958))
+- update non-major ([#962](https://github.com/truecharts/apps/issues/962))
+
+#### Feat
+
+- add new GUI and VPN support to all Apps ([#977](https://github.com/truecharts/apps/issues/977))
+- Add VPN addon and move some config to includes ([#973](https://github.com/truecharts/apps/issues/973))
+- pin all container references to digests ([#963](https://github.com/truecharts/apps/issues/963))
+- Move some common containers to our own containers
+
+#### Fix
+
+- make sure podSecurityContext is included in both SCALE and Helm installs ([#956](https://github.com/truecharts/apps/issues/956))
+
+
+
+## [jellyfin-6.11.16](https://github.com/truecharts/apps/compare/jellyfin-6.11.15...jellyfin-6.11.16) (2021-09-08)
+
+### Fix
+
+- repair Hyperion and some misplaced GUI elements ([#922](https://github.com/truecharts/apps/issues/922))
diff --git a/stable/jellyfin/17.2.0/Chart.yaml b/stable/jellyfin/17.2.0/Chart.yaml
new file mode 100644
index 0000000..9cb1934
--- /dev/null
+++ b/stable/jellyfin/17.2.0/Chart.yaml
@@ -0,0 +1,39 @@
+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: 10.8.13
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Jellyfin is a Free Software Media System
+home: https://truecharts.org/charts/stable/jellyfin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+keywords:
+ - jellyfin
+ - plex
+ - emby
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: jellyfin
+sources:
+ - https://github.com/jellyfin/jellyfin
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin
+ - https://hub.docker.com/r/alpine/socat
+ - https://hub.docker.com/r/jellyfin/jellyfin
+type: application
+version: 17.2.0
diff --git a/stable/jellyfin/17.2.0/README.md b/stable/jellyfin/17.2.0/README.md
new file mode 100644
index 0000000..e146166
--- /dev/null
+++ b/stable/jellyfin/17.2.0/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/jellyfin)
+
+**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/jellyfin/17.2.0/app-readme.md b/stable/jellyfin/17.2.0/app-readme.md
new file mode 100644
index 0000000..73fdb17
--- /dev/null
+++ b/stable/jellyfin/17.2.0/app-readme.md
@@ -0,0 +1,8 @@
+Jellyfin is a Free Software Media System
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/jellyfin](https://truecharts.org/charts/stable/jellyfin)
+
+---
+
+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/jellyfin/17.2.0/charts/common-17.4.2.tgz b/stable/jellyfin/17.2.0/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/jellyfin/17.2.0/charts/common-17.4.2.tgz differ
diff --git a/stable/jellyfin/17.2.0/ix_values.yaml b/stable/jellyfin/17.2.0/ix_values.yaml
new file mode 100644
index 0000000..c472e59
--- /dev/null
+++ b/stable/jellyfin/17.2.0/ix_values.yaml
@@ -0,0 +1,98 @@
+image:
+ repository: docker.io/jellyfin/jellyfin
+ pullPolicy: IfNotPresent
+ tag: 10.8.13@sha256:05a9734d7e83086b957c5b7a16cbb5a60b5bb8d113ffb953e57547359dd05140
+broadcastProxyImage:
+ repository: docker.io/alpine/socat
+ pullPolicy: IfNotPresent
+ tag: 1.8.0.0@sha256:74e6801bf2b555d0660cbb1997c3c451af6d1bd397a4b8a8e43d8fcc85d6c473
+service:
+ main:
+ ports:
+ main:
+ port: 8096
+ targetPort: 8096
+ autodiscovery:
+ enabled: true
+ ports:
+ autodiscovery:
+ enabled: true
+ protocol: udp
+ port: 7359
+ targetPort: 7359
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ cache:
+ enabled: true
+ mountPath: "/cache"
+ type: "emptyDir"
+ transcode:
+ enabled: true
+ mountPath: "/config/transcodes"
+ type: "emptyDir"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.appUrl }}"
+ broadcastproxy:
+ enabled: false
+ type: DaemonSet
+ podSpec:
+ hostNetwork: true
+ # Proxy doesn't seem to respect the TERM signal, so by default
+ # this ends up just hanging until the default grace period ends.
+ # This is unnecesary since this workload only proxies autodiscovery
+ # messages.
+ terminationGracePeriodSeconds: 3
+ containers:
+ broadcastproxy:
+ enabled: true
+ primary: true
+ imageSelector: broadcastProxyImage
+ securityContext:
+ readOnlyRootFilesystem: true
+ command: ["/bin/sh"]
+ # Quite a lot going on here:
+ # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts
+ # - Export the IP to `$TARGET_IP`
+ # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
+ # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
+ # - Start socat in proxy mode
+ # - On exit remove `/tmp/healthy`
+ args:
+ - "-c"
+ - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
+ probes:
+ readiness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ liveness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ startup:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+# -- enable Jellyfin autodiscovery on LAN
+autodiscovery:
+ enabled: false
+updated: true
diff --git a/stable/jellyfin/17.2.0/questions.yaml b/stable/jellyfin/17.2.0/questions.yaml
new file mode 100644
index 0000000..e784423
--- /dev/null
+++ b/stable/jellyfin/17.2.0/questions.yaml
@@ -0,0 +1,3154 @@
+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: autodiscovery
+ group: "App Configuration"
+ label: "Autodiscovery"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Autodiscovery on LAN"
+ schema:
+ type: boolean
+ default: false
+ - 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: 8096
+ 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: transcode
+ label: "App Transcode Storage"
+ description: "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type."
+ 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/jellyfin/17.2.0/templates/NOTES.txt b/stable/jellyfin/17.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/jellyfin/17.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/jellyfin/17.2.0/templates/common.yaml b/stable/jellyfin/17.2.0/templates/common.yaml
new file mode 100644
index 0000000..754fc72
--- /dev/null
+++ b/stable/jellyfin/17.2.0/templates/common.yaml
@@ -0,0 +1,8 @@
+{{- include "tc.v1.common.loader.init" . }}
+
+{{- if .Values.autodiscovery.enabled -}}
+{{/* Add proxy workload */}}
+{{- $_ := set .Values.workload.broadcastproxy "enabled" true -}}
+{{- end -}}
+
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/jellyfin/17.2.0/values.yaml b/stable/jellyfin/17.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/jellyfin/17.2.1/.helmignore b/stable/jellyfin/17.2.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/jellyfin/17.2.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/jellyfin/17.2.1/CHANGELOG.md b/stable/jellyfin/17.2.1/CHANGELOG.md
new file mode 100644
index 0000000..c1c100a
--- /dev/null
+++ b/stable/jellyfin/17.2.1/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## [jellyfin-17.1.18](https://github.com/truecharts/charts/compare/jellyfin-17.1.17...jellyfin-17.1.18) (2024-02-12)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@74e6801](https://github.com/74e6801) by renovate ([#18039](https://github.com/truecharts/charts/issues/18039))
+
+
+## [jellyfin-17.1.17](https://github.com/truecharts/charts/compare/jellyfin-17.1.16...jellyfin-17.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@8bbbacd](https://github.com/8bbbacd) by renovate ([#17827](https://github.com/truecharts/charts/issues/17827))
+
+
+## [jellyfin-17.1.16](https://github.com/truecharts/charts/compare/jellyfin-17.1.15...jellyfin-17.1.16) (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))
+
+
+## [jellyfin-17.1.15](https://github.com/truecharts/charts/compare/jellyfin-17.1.14...jellyfin-17.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@9be350f](https://github.com/9be350f) by renovate ([#17587](https://github.com/truecharts/charts/issues/17587))
+
+
+## [jellyfin-17.1.14](https://github.com/truecharts/charts/compare/jellyfin-17.1.13...jellyfin-17.1.14) (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))
+
+
+## [jellyfin-17.1.13](https://github.com/truecharts/charts/compare/jellyfin-17.1.12...jellyfin-17.1.13) (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))
+
+
+## [jellyfin-17.1.12](https://github.com/truecharts/charts/compare/jellyfin-17.1.11...jellyfin-17.1.12) (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))
+
+
+## [jellyfin-17.1.11](https://github.com/truecharts/charts/compare/jellyfin-17.1.10...jellyfin-17.1.11) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [jellyfin-17.1.10](https://github.com/truecharts/charts/compare/jellyfin-17.1.9...jellyfin-17.1.10) (2024-01-21)
+
+### Chore
\ No newline at end of file
diff --git a/stable/jellyfin/17.2.1/Chart.yaml b/stable/jellyfin/17.2.1/Chart.yaml
new file mode 100644
index 0000000..1004836
--- /dev/null
+++ b/stable/jellyfin/17.2.1/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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: 10.8.13
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Jellyfin is a Free Software Media System
+home: https://truecharts.org/charts/stable/jellyfin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+keywords:
+ - jellyfin
+ - plex
+ - emby
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: jellyfin
+sources:
+ - https://github.com/jellyfin/jellyfin
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin
+ - https://hub.docker.com/r/alpine/socat
+ - https://hub.docker.com/r/jellyfin/jellyfin
+type: application
+version: 17.2.1
diff --git a/stable/jellyfin/17.2.1/README.md b/stable/jellyfin/17.2.1/README.md
new file mode 100644
index 0000000..e146166
--- /dev/null
+++ b/stable/jellyfin/17.2.1/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/jellyfin)
+
+**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/jellyfin/17.2.1/app-readme.md b/stable/jellyfin/17.2.1/app-readme.md
new file mode 100644
index 0000000..73fdb17
--- /dev/null
+++ b/stable/jellyfin/17.2.1/app-readme.md
@@ -0,0 +1,8 @@
+Jellyfin is a Free Software Media System
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/jellyfin](https://truecharts.org/charts/stable/jellyfin)
+
+---
+
+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/jellyfin/17.2.1/charts/common-17.4.2.tgz b/stable/jellyfin/17.2.1/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/jellyfin/17.2.1/charts/common-17.4.2.tgz differ
diff --git a/stable/jellyfin/17.2.1/ix_values.yaml b/stable/jellyfin/17.2.1/ix_values.yaml
new file mode 100644
index 0000000..874a909
--- /dev/null
+++ b/stable/jellyfin/17.2.1/ix_values.yaml
@@ -0,0 +1,98 @@
+image:
+ repository: docker.io/jellyfin/jellyfin
+ pullPolicy: IfNotPresent
+ tag: 10.8.13@sha256:05a9734d7e83086b957c5b7a16cbb5a60b5bb8d113ffb953e57547359dd05140
+broadcastProxyImage:
+ repository: docker.io/alpine/socat
+ pullPolicy: IfNotPresent
+ tag: 1.8.0.0@sha256:c83895a815b89c42eb121a7e9f4b7e23b91b3a461eb7d77c9a2f210fb7ef922b
+service:
+ main:
+ ports:
+ main:
+ port: 8096
+ targetPort: 8096
+ autodiscovery:
+ enabled: true
+ ports:
+ autodiscovery:
+ enabled: true
+ protocol: udp
+ port: 7359
+ targetPort: 7359
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ cache:
+ enabled: true
+ mountPath: "/cache"
+ type: "emptyDir"
+ transcode:
+ enabled: true
+ mountPath: "/config/transcodes"
+ type: "emptyDir"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.appUrl }}"
+ broadcastproxy:
+ enabled: false
+ type: DaemonSet
+ podSpec:
+ hostNetwork: true
+ # Proxy doesn't seem to respect the TERM signal, so by default
+ # this ends up just hanging until the default grace period ends.
+ # This is unnecesary since this workload only proxies autodiscovery
+ # messages.
+ terminationGracePeriodSeconds: 3
+ containers:
+ broadcastproxy:
+ enabled: true
+ primary: true
+ imageSelector: broadcastProxyImage
+ securityContext:
+ readOnlyRootFilesystem: true
+ command: ["/bin/sh"]
+ # Quite a lot going on here:
+ # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts
+ # - Export the IP to `$TARGET_IP`
+ # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
+ # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
+ # - Start socat in proxy mode
+ # - On exit remove `/tmp/healthy`
+ args:
+ - "-c"
+ - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
+ probes:
+ readiness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ liveness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ startup:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+# -- enable Jellyfin autodiscovery on LAN
+autodiscovery:
+ enabled: false
+updated: true
diff --git a/stable/jellyfin/17.2.1/questions.yaml b/stable/jellyfin/17.2.1/questions.yaml
new file mode 100644
index 0000000..e784423
--- /dev/null
+++ b/stable/jellyfin/17.2.1/questions.yaml
@@ -0,0 +1,3154 @@
+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: autodiscovery
+ group: "App Configuration"
+ label: "Autodiscovery"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Autodiscovery on LAN"
+ schema:
+ type: boolean
+ default: false
+ - 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: 8096
+ 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: transcode
+ label: "App Transcode Storage"
+ description: "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type."
+ 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/jellyfin/17.2.1/templates/NOTES.txt b/stable/jellyfin/17.2.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/jellyfin/17.2.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/jellyfin/17.2.1/templates/common.yaml b/stable/jellyfin/17.2.1/templates/common.yaml
new file mode 100644
index 0000000..754fc72
--- /dev/null
+++ b/stable/jellyfin/17.2.1/templates/common.yaml
@@ -0,0 +1,8 @@
+{{- include "tc.v1.common.loader.init" . }}
+
+{{- if .Values.autodiscovery.enabled -}}
+{{/* Add proxy workload */}}
+{{- $_ := set .Values.workload.broadcastproxy "enabled" true -}}
+{{- end -}}
+
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/jellyfin/17.2.1/values.yaml b/stable/jellyfin/17.2.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/jellyfin/17.3.0/.helmignore b/stable/jellyfin/17.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/jellyfin/17.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/jellyfin/17.3.0/CHANGELOG.md b/stable/jellyfin/17.3.0/CHANGELOG.md
new file mode 100644
index 0000000..f447052
--- /dev/null
+++ b/stable/jellyfin/17.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## [jellyfin-17.1.18](https://github.com/truecharts/charts/compare/jellyfin-17.1.17...jellyfin-17.1.18) (2024-02-12)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@74e6801](https://github.com/74e6801) by renovate ([#18039](https://github.com/truecharts/charts/issues/18039))
+
+
+## [jellyfin-17.1.17](https://github.com/truecharts/charts/compare/jellyfin-17.1.16...jellyfin-17.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@8bbbacd](https://github.com/8bbbacd) by renovate ([#17827](https://github.com/truecharts/charts/issues/17827))
+
+
+## [jellyfin-17.1.16](https://github.com/truecharts/charts/compare/jellyfin-17.1.15...jellyfin-17.1.16) (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))
+
+
+## [jellyfin-17.1.15](https://github.com/truecharts/charts/compare/jellyfin-17.1.14...jellyfin-17.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@9be350f](https://github.com/9be350f) by renovate ([#17587](https://github.com/truecharts/charts/issues/17587))
+
+
+## [jellyfin-17.1.14](https://github.com/truecharts/charts/compare/jellyfin-17.1.13...jellyfin-17.1.14) (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))
+
+
+## [jellyfin-17.1.13](https://github.com/truecharts/charts/compare/jellyfin-17.1.12...jellyfin-17.1.13) (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))
+
+
+## [jellyfin-17.1.12](https://github.com/truecharts/charts/compare/jellyfin-17.1.11...jellyfin-17.1.12) (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))
+
+
+## [jellyfin-17.1.11](https://github.com/truecharts/charts/compare/jellyfin-17.1.10...jellyfin-17.1.11) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [jellyfin-17.1.10](https://github.com/truecharts/charts/compare/jellyfin-17.1.9...jellyfin-17.1.10) (2024-01-21)
diff --git a/stable/jellyfin/17.3.0/Chart.yaml b/stable/jellyfin/17.3.0/Chart.yaml
new file mode 100644
index 0000000..3874d0f
--- /dev/null
+++ b/stable/jellyfin/17.3.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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: 10.8.13
+dependencies:
+ - name: common
+ version: 17.5.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Jellyfin is a Free Software Media System
+home: https://truecharts.org/charts/stable/jellyfin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+keywords:
+ - jellyfin
+ - plex
+ - emby
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: jellyfin
+sources:
+ - https://github.com/jellyfin/jellyfin
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin
+ - https://hub.docker.com/r/jellyfin/jellyfin
+ - https://hub.docker.com/r/alpine/socat
+type: application
+version: 17.3.0
diff --git a/stable/jellyfin/17.3.0/README.md b/stable/jellyfin/17.3.0/README.md
new file mode 100644
index 0000000..e146166
--- /dev/null
+++ b/stable/jellyfin/17.3.0/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/jellyfin)
+
+**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/jellyfin/17.3.0/app-readme.md b/stable/jellyfin/17.3.0/app-readme.md
new file mode 100644
index 0000000..73fdb17
--- /dev/null
+++ b/stable/jellyfin/17.3.0/app-readme.md
@@ -0,0 +1,8 @@
+Jellyfin is a Free Software Media System
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/jellyfin](https://truecharts.org/charts/stable/jellyfin)
+
+---
+
+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/jellyfin/17.3.0/charts/common-17.5.0.tgz b/stable/jellyfin/17.3.0/charts/common-17.5.0.tgz
new file mode 100644
index 0000000..3a55348
Binary files /dev/null and b/stable/jellyfin/17.3.0/charts/common-17.5.0.tgz differ
diff --git a/stable/jellyfin/17.3.0/ix_values.yaml b/stable/jellyfin/17.3.0/ix_values.yaml
new file mode 100644
index 0000000..874a909
--- /dev/null
+++ b/stable/jellyfin/17.3.0/ix_values.yaml
@@ -0,0 +1,98 @@
+image:
+ repository: docker.io/jellyfin/jellyfin
+ pullPolicy: IfNotPresent
+ tag: 10.8.13@sha256:05a9734d7e83086b957c5b7a16cbb5a60b5bb8d113ffb953e57547359dd05140
+broadcastProxyImage:
+ repository: docker.io/alpine/socat
+ pullPolicy: IfNotPresent
+ tag: 1.8.0.0@sha256:c83895a815b89c42eb121a7e9f4b7e23b91b3a461eb7d77c9a2f210fb7ef922b
+service:
+ main:
+ ports:
+ main:
+ port: 8096
+ targetPort: 8096
+ autodiscovery:
+ enabled: true
+ ports:
+ autodiscovery:
+ enabled: true
+ protocol: udp
+ port: 7359
+ targetPort: 7359
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ cache:
+ enabled: true
+ mountPath: "/cache"
+ type: "emptyDir"
+ transcode:
+ enabled: true
+ mountPath: "/config/transcodes"
+ type: "emptyDir"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.appUrl }}"
+ broadcastproxy:
+ enabled: false
+ type: DaemonSet
+ podSpec:
+ hostNetwork: true
+ # Proxy doesn't seem to respect the TERM signal, so by default
+ # this ends up just hanging until the default grace period ends.
+ # This is unnecesary since this workload only proxies autodiscovery
+ # messages.
+ terminationGracePeriodSeconds: 3
+ containers:
+ broadcastproxy:
+ enabled: true
+ primary: true
+ imageSelector: broadcastProxyImage
+ securityContext:
+ readOnlyRootFilesystem: true
+ command: ["/bin/sh"]
+ # Quite a lot going on here:
+ # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts
+ # - Export the IP to `$TARGET_IP`
+ # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
+ # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
+ # - Start socat in proxy mode
+ # - On exit remove `/tmp/healthy`
+ args:
+ - "-c"
+ - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
+ probes:
+ readiness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ liveness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ startup:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+# -- enable Jellyfin autodiscovery on LAN
+autodiscovery:
+ enabled: false
+updated: true
diff --git a/stable/jellyfin/17.3.0/questions.yaml b/stable/jellyfin/17.3.0/questions.yaml
new file mode 100644
index 0000000..e784423
--- /dev/null
+++ b/stable/jellyfin/17.3.0/questions.yaml
@@ -0,0 +1,3154 @@
+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: autodiscovery
+ group: "App Configuration"
+ label: "Autodiscovery"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Autodiscovery on LAN"
+ schema:
+ type: boolean
+ default: false
+ - 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: 8096
+ 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: transcode
+ label: "App Transcode Storage"
+ description: "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type."
+ 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/jellyfin/17.3.0/templates/NOTES.txt b/stable/jellyfin/17.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/jellyfin/17.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/jellyfin/17.3.0/templates/common.yaml b/stable/jellyfin/17.3.0/templates/common.yaml
new file mode 100644
index 0000000..754fc72
--- /dev/null
+++ b/stable/jellyfin/17.3.0/templates/common.yaml
@@ -0,0 +1,8 @@
+{{- include "tc.v1.common.loader.init" . }}
+
+{{- if .Values.autodiscovery.enabled -}}
+{{/* Add proxy workload */}}
+{{- $_ := set .Values.workload.broadcastproxy "enabled" true -}}
+{{- end -}}
+
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/jellyfin/17.3.0/values.yaml b/stable/jellyfin/17.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/jellyfin/18.7.1/.helmignore b/stable/jellyfin/18.7.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/jellyfin/18.7.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/jellyfin/18.7.1/CHANGELOG.md b/stable/jellyfin/18.7.1/CHANGELOG.md
new file mode 100644
index 0000000..e9f5d6a
--- /dev/null
+++ b/stable/jellyfin/18.7.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
diff --git a/stable/jellyfin/18.7.1/Chart.yaml b/stable/jellyfin/18.7.1/Chart.yaml
new file mode 100644
index 0000000..5662adf
--- /dev/null
+++ b/stable/jellyfin/18.7.1/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 10.8.13
+dependencies:
+ - name: common
+ version: 20.2.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Jellyfin is a Free Software Media System
+home: https://truecharts.org/charts/stable/jellyfin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+keywords:
+ - jellyfin
+ - plex
+ - emby
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: jellyfin
+sources:
+ - https://github.com/jellyfin/jellyfin
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin
+ - https://hub.docker.com/r/jellyfin/jellyfin
+ - https://hub.docker.com/r/alpine/socat
+type: application
+version: 18.7.1
diff --git a/stable/jellyfin/18.7.1/README.md b/stable/jellyfin/18.7.1/README.md
new file mode 100644
index 0000000..e146166
--- /dev/null
+++ b/stable/jellyfin/18.7.1/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/jellyfin)
+
+**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/jellyfin/18.7.1/app-changelog.md b/stable/jellyfin/18.7.1/app-changelog.md
new file mode 100644
index 0000000..e5c4736
--- /dev/null
+++ b/stable/jellyfin/18.7.1/app-changelog.md
@@ -0,0 +1,13 @@
+
+
+## [jellyfin-18.7.1](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.1) (2024-03-22)
+
+### Chore
+
+
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
\ No newline at end of file
diff --git a/stable/jellyfin/18.7.1/app-readme.md b/stable/jellyfin/18.7.1/app-readme.md
new file mode 100644
index 0000000..73fdb17
--- /dev/null
+++ b/stable/jellyfin/18.7.1/app-readme.md
@@ -0,0 +1,8 @@
+Jellyfin is a Free Software Media System
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/jellyfin](https://truecharts.org/charts/stable/jellyfin)
+
+---
+
+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/jellyfin/18.7.1/charts/common-20.2.2.tgz b/stable/jellyfin/18.7.1/charts/common-20.2.2.tgz
new file mode 100644
index 0000000..a03705c
Binary files /dev/null and b/stable/jellyfin/18.7.1/charts/common-20.2.2.tgz differ
diff --git a/stable/jellyfin/18.7.1/ix_values.yaml b/stable/jellyfin/18.7.1/ix_values.yaml
new file mode 100644
index 0000000..a6db744
--- /dev/null
+++ b/stable/jellyfin/18.7.1/ix_values.yaml
@@ -0,0 +1,98 @@
+image:
+ repository: docker.io/jellyfin/jellyfin
+ pullPolicy: IfNotPresent
+ tag: 10.8.13@sha256:05a9734d7e83086b957c5b7a16cbb5a60b5bb8d113ffb953e57547359dd05140
+broadcastProxyImage:
+ repository: docker.io/alpine/socat
+ pullPolicy: IfNotPresent
+ tag: 1.8.0.0@sha256:2e782d6294f302728ffd43de9d8e07d2e3f5112100f6640d9a209d30c003f057
+service:
+ main:
+ ports:
+ main:
+ port: 8096
+ targetPort: 8096
+ autodiscovery:
+ enabled: true
+ ports:
+ autodiscovery:
+ enabled: true
+ protocol: udp
+ port: 7359
+ targetPort: 7359
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ cache:
+ enabled: true
+ mountPath: "/cache"
+ type: "emptyDir"
+ transcode:
+ enabled: true
+ mountPath: "/config/transcodes"
+ type: "emptyDir"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.appUrl }}"
+ broadcastproxy:
+ enabled: false
+ type: DaemonSet
+ podSpec:
+ hostNetwork: true
+ # Proxy doesn't seem to respect the TERM signal, so by default
+ # this ends up just hanging until the default grace period ends.
+ # This is unnecesary since this workload only proxies autodiscovery
+ # messages.
+ terminationGracePeriodSeconds: 3
+ containers:
+ broadcastproxy:
+ enabled: true
+ primary: true
+ imageSelector: broadcastProxyImage
+ securityContext:
+ readOnlyRootFilesystem: true
+ command: ["/bin/sh"]
+ # Quite a lot going on here:
+ # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts
+ # - Export the IP to `$TARGET_IP`
+ # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
+ # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
+ # - Start socat in proxy mode
+ # - On exit remove `/tmp/healthy`
+ args:
+ - "-c"
+ - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
+ probes:
+ readiness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ liveness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ startup:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+# -- enable Jellyfin autodiscovery on LAN
+autodiscovery:
+ enabled: false
+updated: true
diff --git a/stable/jellyfin/18.7.1/questions.yaml b/stable/jellyfin/18.7.1/questions.yaml
new file mode 100644
index 0000000..d47750a
--- /dev/null
+++ b/stable/jellyfin/18.7.1/questions.yaml
@@ -0,0 +1,3126 @@
+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: autodiscovery
+ group: "App Configuration"
+ label: "Autodiscovery"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Autodiscovery on LAN"
+ schema:
+ type: boolean
+ default: false
+ - 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: 8096
+ 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: transcode
+ label: "App Transcode Storage"
+ description: "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type."
+ 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: '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: 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: 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/jellyfin/18.7.1/templates/NOTES.txt b/stable/jellyfin/18.7.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/jellyfin/18.7.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/jellyfin/18.7.1/templates/common.yaml b/stable/jellyfin/18.7.1/templates/common.yaml
new file mode 100644
index 0000000..754fc72
--- /dev/null
+++ b/stable/jellyfin/18.7.1/templates/common.yaml
@@ -0,0 +1,8 @@
+{{- include "tc.v1.common.loader.init" . }}
+
+{{- if .Values.autodiscovery.enabled -}}
+{{/* Add proxy workload */}}
+{{- $_ := set .Values.workload.broadcastproxy "enabled" true -}}
+{{- end -}}
+
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/jellyfin/18.7.1/values.yaml b/stable/jellyfin/18.7.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/jellyfin/18.7.2/.helmignore b/stable/jellyfin/18.7.2/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/jellyfin/18.7.2/.helmignore
@@ -0,0 +1,30 @@
+# 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/jellyfin/18.7.2/CHANGELOG.md b/stable/jellyfin/18.7.2/CHANGELOG.md
new file mode 100644
index 0000000..e960984
--- /dev/null
+++ b/stable/jellyfin/18.7.2/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [jellyfin-18.7.2](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.2](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.2](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.2](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.2](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.2](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
diff --git a/stable/jellyfin/18.7.2/Chart.yaml b/stable/jellyfin/18.7.2/Chart.yaml
new file mode 100644
index 0000000..aacd609
--- /dev/null
+++ b/stable/jellyfin/18.7.2/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 10.8.13
+dependencies:
+ - name: common
+ version: 20.2.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Jellyfin is a Free Software Media System
+home: https://truecharts.org/charts/stable/jellyfin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+keywords:
+ - jellyfin
+ - plex
+ - emby
+kubeVersion: '>=1.24.0-0'
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: jellyfin
+sources:
+ - https://github.com/jellyfin/jellyfin
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin
+ - https://hub.docker.com/r/alpine/socat
+ - https://hub.docker.com/r/jellyfin/jellyfin
+type: application
+version: 18.7.2
diff --git a/stable/jellyfin/18.7.2/README.md b/stable/jellyfin/18.7.2/README.md
new file mode 100644
index 0000000..e146166
--- /dev/null
+++ b/stable/jellyfin/18.7.2/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/jellyfin)
+
+**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/jellyfin/18.7.2/app-changelog.md b/stable/jellyfin/18.7.2/app-changelog.md
new file mode 100644
index 0000000..1796a6f
--- /dev/null
+++ b/stable/jellyfin/18.7.2/app-changelog.md
@@ -0,0 +1,15 @@
+
+
+## [jellyfin-18.7.2](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.2) (2024-03-23)
+
+### Chore
+
+
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
\ No newline at end of file
diff --git a/stable/jellyfin/18.7.2/app-readme.md b/stable/jellyfin/18.7.2/app-readme.md
new file mode 100644
index 0000000..73fdb17
--- /dev/null
+++ b/stable/jellyfin/18.7.2/app-readme.md
@@ -0,0 +1,8 @@
+Jellyfin is a Free Software Media System
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/jellyfin](https://truecharts.org/charts/stable/jellyfin)
+
+---
+
+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/jellyfin/18.7.2/charts/common-20.2.2.tgz b/stable/jellyfin/18.7.2/charts/common-20.2.2.tgz
new file mode 100644
index 0000000..a03705c
Binary files /dev/null and b/stable/jellyfin/18.7.2/charts/common-20.2.2.tgz differ
diff --git a/stable/jellyfin/18.7.2/ix_values.yaml b/stable/jellyfin/18.7.2/ix_values.yaml
new file mode 100644
index 0000000..8a4b92a
--- /dev/null
+++ b/stable/jellyfin/18.7.2/ix_values.yaml
@@ -0,0 +1,98 @@
+image:
+ repository: docker.io/jellyfin/jellyfin
+ pullPolicy: IfNotPresent
+ tag: 10.8.13@sha256:05a9734d7e83086b957c5b7a16cbb5a60b5bb8d113ffb953e57547359dd05140
+broadcastProxyImage:
+ repository: docker.io/alpine/socat
+ pullPolicy: IfNotPresent
+ tag: 1.8.0.0@sha256:615f6161ed38e6daa676402658fef903d001acda7b855edf1007df57be43d7aa
+service:
+ main:
+ ports:
+ main:
+ port: 8096
+ targetPort: 8096
+ autodiscovery:
+ enabled: true
+ ports:
+ autodiscovery:
+ enabled: true
+ protocol: udp
+ port: 7359
+ targetPort: 7359
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ cache:
+ enabled: true
+ mountPath: "/cache"
+ type: "emptyDir"
+ transcode:
+ enabled: true
+ mountPath: "/config/transcodes"
+ type: "emptyDir"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.appUrl }}"
+ broadcastproxy:
+ enabled: false
+ type: DaemonSet
+ podSpec:
+ hostNetwork: true
+ # Proxy doesn't seem to respect the TERM signal, so by default
+ # this ends up just hanging until the default grace period ends.
+ # This is unnecesary since this workload only proxies autodiscovery
+ # messages.
+ terminationGracePeriodSeconds: 3
+ containers:
+ broadcastproxy:
+ enabled: true
+ primary: true
+ imageSelector: broadcastProxyImage
+ securityContext:
+ readOnlyRootFilesystem: true
+ command: ["/bin/sh"]
+ # Quite a lot going on here:
+ # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts
+ # - Export the IP to `$TARGET_IP`
+ # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
+ # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
+ # - Start socat in proxy mode
+ # - On exit remove `/tmp/healthy`
+ args:
+ - "-c"
+ - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
+ probes:
+ readiness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ liveness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ startup:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+# -- enable Jellyfin autodiscovery on LAN
+autodiscovery:
+ enabled: false
+updated: true
diff --git a/stable/jellyfin/18.7.2/questions.yaml b/stable/jellyfin/18.7.2/questions.yaml
new file mode 100644
index 0000000..d47750a
--- /dev/null
+++ b/stable/jellyfin/18.7.2/questions.yaml
@@ -0,0 +1,3126 @@
+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: autodiscovery
+ group: "App Configuration"
+ label: "Autodiscovery"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Autodiscovery on LAN"
+ schema:
+ type: boolean
+ default: false
+ - 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: 8096
+ 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: transcode
+ label: "App Transcode Storage"
+ description: "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type."
+ 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: '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: 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: 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/jellyfin/18.7.2/templates/NOTES.txt b/stable/jellyfin/18.7.2/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/jellyfin/18.7.2/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/jellyfin/18.7.2/templates/common.yaml b/stable/jellyfin/18.7.2/templates/common.yaml
new file mode 100644
index 0000000..754fc72
--- /dev/null
+++ b/stable/jellyfin/18.7.2/templates/common.yaml
@@ -0,0 +1,8 @@
+{{- include "tc.v1.common.loader.init" . }}
+
+{{- if .Values.autodiscovery.enabled -}}
+{{/* Add proxy workload */}}
+{{- $_ := set .Values.workload.broadcastproxy "enabled" true -}}
+{{- end -}}
+
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/jellyfin/18.7.2/values.yaml b/stable/jellyfin/18.7.2/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/jellyfin/18.7.3/.helmignore b/stable/jellyfin/18.7.3/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/jellyfin/18.7.3/.helmignore
@@ -0,0 +1,30 @@
+# 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/jellyfin/18.7.3/CHANGELOG.md b/stable/jellyfin/18.7.3/CHANGELOG.md
new file mode 100644
index 0000000..984c9f7
--- /dev/null
+++ b/stable/jellyfin/18.7.3/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-25)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-25)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-25)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-24)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-24)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-24)
+
+### Chore
+
diff --git a/stable/jellyfin/18.7.3/Chart.yaml b/stable/jellyfin/18.7.3/Chart.yaml
new file mode 100644
index 0000000..f1de90c
--- /dev/null
+++ b/stable/jellyfin/18.7.3/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 10.8.13
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Jellyfin is a Free Software Media System
+home: https://truecharts.org/charts/stable/jellyfin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+keywords:
+ - jellyfin
+ - plex
+ - emby
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: jellyfin
+sources:
+ - https://github.com/jellyfin/jellyfin
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin
+ - https://hub.docker.com/r/alpine/socat
+ - https://hub.docker.com/r/jellyfin/jellyfin
+type: application
+version: 18.7.3
diff --git a/stable/jellyfin/18.7.3/README.md b/stable/jellyfin/18.7.3/README.md
new file mode 100644
index 0000000..e146166
--- /dev/null
+++ b/stable/jellyfin/18.7.3/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/jellyfin)
+
+**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/jellyfin/18.7.3/app-changelog.md b/stable/jellyfin/18.7.3/app-changelog.md
new file mode 100644
index 0000000..114ec16
--- /dev/null
+++ b/stable/jellyfin/18.7.3/app-changelog.md
@@ -0,0 +1,17 @@
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-25)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
\ No newline at end of file
diff --git a/stable/jellyfin/18.7.3/app-readme.md b/stable/jellyfin/18.7.3/app-readme.md
new file mode 100644
index 0000000..73fdb17
--- /dev/null
+++ b/stable/jellyfin/18.7.3/app-readme.md
@@ -0,0 +1,8 @@
+Jellyfin is a Free Software Media System
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/jellyfin](https://truecharts.org/charts/stable/jellyfin)
+
+---
+
+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/jellyfin/18.7.3/charts/common-20.2.3.tgz b/stable/jellyfin/18.7.3/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/jellyfin/18.7.3/charts/common-20.2.3.tgz differ
diff --git a/stable/jellyfin/18.7.3/ix_values.yaml b/stable/jellyfin/18.7.3/ix_values.yaml
new file mode 100644
index 0000000..8a4b92a
--- /dev/null
+++ b/stable/jellyfin/18.7.3/ix_values.yaml
@@ -0,0 +1,98 @@
+image:
+ repository: docker.io/jellyfin/jellyfin
+ pullPolicy: IfNotPresent
+ tag: 10.8.13@sha256:05a9734d7e83086b957c5b7a16cbb5a60b5bb8d113ffb953e57547359dd05140
+broadcastProxyImage:
+ repository: docker.io/alpine/socat
+ pullPolicy: IfNotPresent
+ tag: 1.8.0.0@sha256:615f6161ed38e6daa676402658fef903d001acda7b855edf1007df57be43d7aa
+service:
+ main:
+ ports:
+ main:
+ port: 8096
+ targetPort: 8096
+ autodiscovery:
+ enabled: true
+ ports:
+ autodiscovery:
+ enabled: true
+ protocol: udp
+ port: 7359
+ targetPort: 7359
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ cache:
+ enabled: true
+ mountPath: "/cache"
+ type: "emptyDir"
+ transcode:
+ enabled: true
+ mountPath: "/config/transcodes"
+ type: "emptyDir"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.appUrl }}"
+ broadcastproxy:
+ enabled: false
+ type: DaemonSet
+ podSpec:
+ hostNetwork: true
+ # Proxy doesn't seem to respect the TERM signal, so by default
+ # this ends up just hanging until the default grace period ends.
+ # This is unnecesary since this workload only proxies autodiscovery
+ # messages.
+ terminationGracePeriodSeconds: 3
+ containers:
+ broadcastproxy:
+ enabled: true
+ primary: true
+ imageSelector: broadcastProxyImage
+ securityContext:
+ readOnlyRootFilesystem: true
+ command: ["/bin/sh"]
+ # Quite a lot going on here:
+ # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts
+ # - Export the IP to `$TARGET_IP`
+ # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
+ # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
+ # - Start socat in proxy mode
+ # - On exit remove `/tmp/healthy`
+ args:
+ - "-c"
+ - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
+ probes:
+ readiness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ liveness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ startup:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+# -- enable Jellyfin autodiscovery on LAN
+autodiscovery:
+ enabled: false
+updated: true
diff --git a/stable/jellyfin/18.7.3/questions.yaml b/stable/jellyfin/18.7.3/questions.yaml
new file mode 100644
index 0000000..d47750a
--- /dev/null
+++ b/stable/jellyfin/18.7.3/questions.yaml
@@ -0,0 +1,3126 @@
+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: autodiscovery
+ group: "App Configuration"
+ label: "Autodiscovery"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Autodiscovery on LAN"
+ schema:
+ type: boolean
+ default: false
+ - 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: 8096
+ 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: transcode
+ label: "App Transcode Storage"
+ description: "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type."
+ 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: '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: 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: 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/jellyfin/18.7.3/templates/NOTES.txt b/stable/jellyfin/18.7.3/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/jellyfin/18.7.3/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/jellyfin/18.7.3/templates/common.yaml b/stable/jellyfin/18.7.3/templates/common.yaml
new file mode 100644
index 0000000..754fc72
--- /dev/null
+++ b/stable/jellyfin/18.7.3/templates/common.yaml
@@ -0,0 +1,8 @@
+{{- include "tc.v1.common.loader.init" . }}
+
+{{- if .Values.autodiscovery.enabled -}}
+{{/* Add proxy workload */}}
+{{- $_ := set .Values.workload.broadcastproxy "enabled" true -}}
+{{- end -}}
+
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/jellyfin/18.7.3/values.yaml b/stable/jellyfin/18.7.3/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/jellyfin/18.7.4/.helmignore b/stable/jellyfin/18.7.4/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/jellyfin/18.7.4/.helmignore
@@ -0,0 +1,30 @@
+# 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/jellyfin/18.7.4/CHANGELOG.md b/stable/jellyfin/18.7.4/CHANGELOG.md
new file mode 100644
index 0000000..33f1a86
--- /dev/null
+++ b/stable/jellyfin/18.7.4/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [jellyfin-18.7.4](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.4](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-25)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-25)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-25)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
+
+
+## [jellyfin-18.7.3](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.3) (2024-03-24)
\ No newline at end of file
diff --git a/stable/jellyfin/18.7.4/Chart.yaml b/stable/jellyfin/18.7.4/Chart.yaml
new file mode 100644
index 0000000..67aef96
--- /dev/null
+++ b/stable/jellyfin/18.7.4/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 10.8.13
+dependencies:
+ - name: common
+ version: 20.2.4
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Jellyfin is a Free Software Media System
+home: https://truecharts.org/charts/stable/jellyfin
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+keywords:
+ - jellyfin
+ - plex
+ - emby
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: jellyfin
+sources:
+ - https://github.com/jellyfin/jellyfin
+ - https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin
+ - https://hub.docker.com/r/alpine/socat
+ - https://hub.docker.com/r/jellyfin/jellyfin
+type: application
+version: 18.7.4
diff --git a/stable/jellyfin/18.7.4/README.md b/stable/jellyfin/18.7.4/README.md
new file mode 100644
index 0000000..e146166
--- /dev/null
+++ b/stable/jellyfin/18.7.4/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/jellyfin)
+
+**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/jellyfin/18.7.4/app-changelog.md b/stable/jellyfin/18.7.4/app-changelog.md
new file mode 100644
index 0000000..ae1630e
--- /dev/null
+++ b/stable/jellyfin/18.7.4/app-changelog.md
@@ -0,0 +1,19 @@
+
+
+## [jellyfin-18.7.4](https://github.com/truecharts/charts/compare/jellyfin-18.6.0...jellyfin-18.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@615f616](https://github.com/615f616) by renovate ([#19661](https://github.com/truecharts/charts/issues/19661))
+
+- 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.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+- update container image docker.io/alpine/socat to 1.8.0.0[@2e782d6](https://github.com/2e782d6) by renovate ([#19222](https://github.com/truecharts/charts/issues/19222))
\ No newline at end of file
diff --git a/stable/jellyfin/18.7.4/app-readme.md b/stable/jellyfin/18.7.4/app-readme.md
new file mode 100644
index 0000000..73fdb17
--- /dev/null
+++ b/stable/jellyfin/18.7.4/app-readme.md
@@ -0,0 +1,8 @@
+Jellyfin is a Free Software Media System
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/jellyfin](https://truecharts.org/charts/stable/jellyfin)
+
+---
+
+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/jellyfin/18.7.4/charts/common-20.2.4.tgz b/stable/jellyfin/18.7.4/charts/common-20.2.4.tgz
new file mode 100644
index 0000000..e02a4ec
Binary files /dev/null and b/stable/jellyfin/18.7.4/charts/common-20.2.4.tgz differ
diff --git a/stable/jellyfin/18.7.4/ix_values.yaml b/stable/jellyfin/18.7.4/ix_values.yaml
new file mode 100644
index 0000000..8a4b92a
--- /dev/null
+++ b/stable/jellyfin/18.7.4/ix_values.yaml
@@ -0,0 +1,98 @@
+image:
+ repository: docker.io/jellyfin/jellyfin
+ pullPolicy: IfNotPresent
+ tag: 10.8.13@sha256:05a9734d7e83086b957c5b7a16cbb5a60b5bb8d113ffb953e57547359dd05140
+broadcastProxyImage:
+ repository: docker.io/alpine/socat
+ pullPolicy: IfNotPresent
+ tag: 1.8.0.0@sha256:615f6161ed38e6daa676402658fef903d001acda7b855edf1007df57be43d7aa
+service:
+ main:
+ ports:
+ main:
+ port: 8096
+ targetPort: 8096
+ autodiscovery:
+ enabled: true
+ ports:
+ autodiscovery:
+ enabled: true
+ protocol: udp
+ port: 7359
+ targetPort: 7359
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ cache:
+ enabled: true
+ mountPath: "/cache"
+ type: "emptyDir"
+ transcode:
+ enabled: true
+ mountPath: "/config/transcodes"
+ type: "emptyDir"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ env:
+ JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.appUrl }}"
+ broadcastproxy:
+ enabled: false
+ type: DaemonSet
+ podSpec:
+ hostNetwork: true
+ # Proxy doesn't seem to respect the TERM signal, so by default
+ # this ends up just hanging until the default grace period ends.
+ # This is unnecesary since this workload only proxies autodiscovery
+ # messages.
+ terminationGracePeriodSeconds: 3
+ containers:
+ broadcastproxy:
+ enabled: true
+ primary: true
+ imageSelector: broadcastProxyImage
+ securityContext:
+ readOnlyRootFilesystem: true
+ command: ["/bin/sh"]
+ # Quite a lot going on here:
+ # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts
+ # - Export the IP to `$TARGET_IP`
+ # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
+ # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
+ # - Start socat in proxy mode
+ # - On exit remove `/tmp/healthy`
+ args:
+ - "-c"
+ - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
+ probes:
+ readiness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ liveness:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+ startup:
+ enabled: true
+ type: exec
+ command:
+ - cat
+ - /tmp/healthy
+# -- enable Jellyfin autodiscovery on LAN
+autodiscovery:
+ enabled: false
+updated: true
diff --git a/stable/jellyfin/18.7.4/questions.yaml b/stable/jellyfin/18.7.4/questions.yaml
new file mode 100644
index 0000000..d47750a
--- /dev/null
+++ b/stable/jellyfin/18.7.4/questions.yaml
@@ -0,0 +1,3126 @@
+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: autodiscovery
+ group: "App Configuration"
+ label: "Autodiscovery"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Autodiscovery on LAN"
+ schema:
+ type: boolean
+ default: false
+ - 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: 8096
+ 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: transcode
+ label: "App Transcode Storage"
+ description: "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type."
+ 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: '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: 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: 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/jellyfin/18.7.4/templates/NOTES.txt b/stable/jellyfin/18.7.4/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/jellyfin/18.7.4/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/jellyfin/18.7.4/templates/common.yaml b/stable/jellyfin/18.7.4/templates/common.yaml
new file mode 100644
index 0000000..754fc72
--- /dev/null
+++ b/stable/jellyfin/18.7.4/templates/common.yaml
@@ -0,0 +1,8 @@
+{{- include "tc.v1.common.loader.init" . }}
+
+{{- if .Values.autodiscovery.enabled -}}
+{{/* Add proxy workload */}}
+{{- $_ := set .Values.workload.broadcastproxy "enabled" true -}}
+{{- end -}}
+
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/jellyfin/18.7.4/values.yaml b/stable/jellyfin/18.7.4/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/jellyfin/app_versions.json b/stable/jellyfin/app_versions.json
new file mode 100644
index 0000000..5af0ec8
--- /dev/null
+++ b/stable/jellyfin/app_versions.json
@@ -0,0 +1,38428 @@
+{
+ "18.7.4": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/jellyfin/18.7.4",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "10.8.13_18.7.4",
+ "version": "18.7.4",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "10.8.13",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.4",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Jellyfin is a Free Software Media System",
+ "home": "https://truecharts.org/charts/stable/jellyfin",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png",
+ "keywords": [
+ "jellyfin",
+ "plex",
+ "emby"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "jellyfin",
+ "sources": [
+ "https://github.com/jellyfin/jellyfin",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin",
+ "https://hub.docker.com/r/alpine/socat",
+ "https://hub.docker.com/r/jellyfin/jellyfin"
+ ],
+ "type": "application",
+ "version": "18.7.4"
+ },
+ "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": "autodiscovery",
+ "group": "App Configuration",
+ "label": "Autodiscovery",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Autodiscovery on LAN",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 8096,
+ "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": "transcode",
+ "label": "App Transcode Storage",
+ "description": "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type.",
+ "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": "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": "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": "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": "Jellyfin is a Free Software Media System
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/jellyfin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n"
+ },
+ "18.7.3": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/jellyfin/18.7.3",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "10.8.13_18.7.3",
+ "version": "18.7.3",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "10.8.13",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Jellyfin is a Free Software Media System",
+ "home": "https://truecharts.org/charts/stable/jellyfin",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png",
+ "keywords": [
+ "jellyfin",
+ "plex",
+ "emby"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "jellyfin",
+ "sources": [
+ "https://github.com/jellyfin/jellyfin",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin",
+ "https://hub.docker.com/r/alpine/socat",
+ "https://hub.docker.com/r/jellyfin/jellyfin"
+ ],
+ "type": "application",
+ "version": "18.7.3"
+ },
+ "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": "autodiscovery",
+ "group": "App Configuration",
+ "label": "Autodiscovery",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Autodiscovery on LAN",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 8096,
+ "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": "transcode",
+ "label": "App Transcode Storage",
+ "description": "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type.",
+ "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": "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": "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": "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": "Jellyfin is a Free Software Media System
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/jellyfin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
"
+ },
+ "18.7.2": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/jellyfin/18.7.2",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "10.8.13_18.7.2",
+ "version": "18.7.2",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "10.8.13",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Jellyfin is a Free Software Media System",
+ "home": "https://truecharts.org/charts/stable/jellyfin",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png",
+ "keywords": [
+ "jellyfin",
+ "plex",
+ "emby"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "jellyfin",
+ "sources": [
+ "https://github.com/jellyfin/jellyfin",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin",
+ "https://hub.docker.com/r/alpine/socat",
+ "https://hub.docker.com/r/jellyfin/jellyfin"
+ ],
+ "type": "application",
+ "version": "18.7.2"
+ },
+ "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": "autodiscovery",
+ "group": "App Configuration",
+ "label": "Autodiscovery",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Autodiscovery on LAN",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 8096,
+ "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": "transcode",
+ "label": "App Transcode Storage",
+ "description": "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type.",
+ "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": "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": "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": "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": "Jellyfin is a Free Software Media System
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/jellyfin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image docker.io/alpine/socat to 1.8.0.0@615f616 by renovate (#19661)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
"
+ },
+ "18.7.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/jellyfin/18.7.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "10.8.13_18.7.1",
+ "version": "18.7.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "10.8.13",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Jellyfin is a Free Software Media System",
+ "home": "https://truecharts.org/charts/stable/jellyfin",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png",
+ "keywords": [
+ "jellyfin",
+ "plex",
+ "emby"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "jellyfin",
+ "sources": [
+ "https://github.com/jellyfin/jellyfin",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin",
+ "https://hub.docker.com/r/jellyfin/jellyfin",
+ "https://hub.docker.com/r/alpine/socat"
+ ],
+ "type": "application",
+ "version": "18.7.1"
+ },
+ "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": "autodiscovery",
+ "group": "App Configuration",
+ "label": "Autodiscovery",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Autodiscovery on LAN",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 8096,
+ "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": "transcode",
+ "label": "App Transcode Storage",
+ "description": "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type.",
+ "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": "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": "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": "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": "Jellyfin is a Free Software Media System
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/jellyfin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image docker.io/alpine/socat to 1.8.0.0@2e782d6 by renovate (#19222)
\n \n
"
+ },
+ "17.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/jellyfin/17.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "10.8.13_17.3.0",
+ "version": "17.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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": "10.8.13",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.5.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Jellyfin is a Free Software Media System",
+ "home": "https://truecharts.org/charts/stable/jellyfin",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png",
+ "keywords": [
+ "jellyfin",
+ "plex",
+ "emby"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "jellyfin",
+ "sources": [
+ "https://github.com/jellyfin/jellyfin",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin",
+ "https://hub.docker.com/r/jellyfin/jellyfin",
+ "https://hub.docker.com/r/alpine/socat"
+ ],
+ "type": "application",
+ "version": "17.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": "autodiscovery",
+ "group": "App Configuration",
+ "label": "Autodiscovery",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Autodiscovery on LAN",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 8096,
+ "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": "transcode",
+ "label": "App Transcode Storage",
+ "description": "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type.",
+ "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": "Jellyfin is a Free Software Media System
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/jellyfin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image docker.io/alpine/socat to 1.8.0.0@74e6801 by renovate (#18039)
\n
\n\nChore
\n\n- update container image docker.io/alpine/socat to 1.8.0.0@8bbbacd by renovate (#17827)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image docker.io/alpine/socat to 1.8.0.0@9be350f by renovate (#17587)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n"
+ },
+ "17.2.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/jellyfin/17.2.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "10.8.13_17.2.1",
+ "version": "17.2.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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": "10.8.13",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Jellyfin is a Free Software Media System",
+ "home": "https://truecharts.org/charts/stable/jellyfin",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png",
+ "keywords": [
+ "jellyfin",
+ "plex",
+ "emby"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "jellyfin",
+ "sources": [
+ "https://github.com/jellyfin/jellyfin",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin",
+ "https://hub.docker.com/r/alpine/socat",
+ "https://hub.docker.com/r/jellyfin/jellyfin"
+ ],
+ "type": "application",
+ "version": "17.2.1"
+ },
+ "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": "autodiscovery",
+ "group": "App Configuration",
+ "label": "Autodiscovery",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Autodiscovery on LAN",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 8096,
+ "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": "transcode",
+ "label": "App Transcode Storage",
+ "description": "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type.",
+ "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": "Jellyfin is a Free Software Media System
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/jellyfin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image docker.io/alpine/socat to 1.8.0.0@74e6801 by renovate (#18039)
\n
\n\nChore
\n\n- update container image docker.io/alpine/socat to 1.8.0.0@8bbbacd by renovate (#17827)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image docker.io/alpine/socat to 1.8.0.0@9be350f by renovate (#17587)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
"
+ },
+ "17.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/jellyfin/17.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "10.8.13_17.2.0",
+ "version": "17.2.0",
+ "chart_metadata": {
+ "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": "10.8.13",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Jellyfin is a Free Software Media System",
+ "home": "https://truecharts.org/charts/stable/jellyfin",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png",
+ "keywords": [
+ "jellyfin",
+ "plex",
+ "emby"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "jellyfin",
+ "sources": [
+ "https://github.com/jellyfin/jellyfin",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/jellyfin",
+ "https://hub.docker.com/r/alpine/socat",
+ "https://hub.docker.com/r/jellyfin/jellyfin"
+ ],
+ "type": "application",
+ "version": "17.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": "autodiscovery",
+ "group": "App Configuration",
+ "label": "Autodiscovery",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enable Autodiscovery on LAN",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": 8096,
+ "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": "transcode",
+ "label": "App Transcode Storage",
+ "description": "Storage for transcode, best to be set to emptyDir and if enough RAM, to Memory type.",
+ "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": "Jellyfin is a Free Software Media System
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/jellyfin
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Major Change to GUI
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4349)
\n- update helm general non-major (#4329)
\n
\nFix
\n\n- change container config label
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4349)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4317)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4308)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4261)
\n- update docker general non-major (#4280)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update docker general non-major (#4230)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4182)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4122)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4071)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- split addons in smaller templates (#3979)
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3918)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update docker general non-major (#3906)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3898)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3639)
\n- update helm chart common to v10.5.5 (#3626)
\n
\n\nChore
\n\n- update helm chart common to v10.5.5 (#3626)
\n
\n\nChore
\n\n- update helm general non-major (#3619)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3545)
\n
\n\nChore
\n\n- update docker general non-major (#3478)
\n
\n\nChore
\n\n- add documentation checkbox/section to all SCALE Apps
\n- update helm general non-major helm releases (#3456)
\n
\nFix
\n\n- move extraArgs from .Values.controller to .Values (#3447)
\n
\n\nChore
\n\n- update docker general non-major (#3377)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3376)
\n- replace questions parts with templates (#3402)
\n
\n\nChore
\n\n- update home links (#3291)
\n- update helm general non-major helm releases (#3302)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update docker general non-major (#3295)
\n
\n\nChore
\n\n- update docker general non-major (#3295)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- Bump all charts to generate config and container references due to huge increase of repository
\n- update helm general non-major helm releases (#3268)
\n
\n\nChore
\n\n- Update Readme and Description on SCALE
\n
\n\nFix
\n\n- regenerate catalog and update template
\n
\n\nFix
\n\n- bump to ensure .helmignore is present on all Charts
\n
\n\nChore
\n\n- update icons (#3156)
\n- bump to cleanup old docs and use correct icon urls
\n
\n\nChore
\n\n- bump to regenerate documentation
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3147)
\n
\n
\n\nChore
\n\n- move icons into the apps folder (#3139)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3113)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3066)
\n
\n
\n\nChore
\n\n- update docker general non-major (#2999)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2977)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2948)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2943)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2886)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2854)
\n- update docker general non-major (#2856)
\n
\n
\n\nFix
\n\n- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format.
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- sync all apps persistence configuration and always default to PVC
\n
\nFix
\n\n- remove malfunctioning SCALE migration script
\n
\nRefactor
\n\n- BREAKING CHANGE (#2836)
\n
\n
\n\nChore
\n\n- sync all apps persistence configuration and always default to PVC
\n
\nRefactor
\n\n- BREAKING CHANGE (#2836)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2803)
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#2759)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2759)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2649)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2612)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2573)
\n
\n
\n\nChore
\n\n- add missing quote on description (#2515)
\n- update helm general non-major helm releases (#2524)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2480)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2410)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2361)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2354)
\n
\n
\n\nChore
\n\n- bump all apps to trigger ci
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2111)
\n- Remove
-icon string from icon png's (#2040) \n
\n
\n\nChore
\n\n- remove fixed env from questions.yaml
\n- update helm general major helm releases (#2021)
\n
\nFix
\n\n- BREAKING CHANGE Move some env-vars outside of env section (#2010)
\n
\n
\n\nChore
\n\n- rename
web_portal to open (#1957) \n- update helm general non-major helm releases (#1999)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1927)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1901)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1871)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.15.0 (#1859)
\n
\n
\n\nChore
\n\n- Mount cache to emptyDir and add PublishedServerURL var (#1853)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1852)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1828)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1791)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1766)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1759)
\n
\nFix
\n\n- set additional_attrs: true on all dicts (#1750)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1732)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1712)
\n
\nFeat
\n\n- expose capabilities in GUI (#1709)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1704)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1693)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1623)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1596)
\n
\n
\n\nChore
\n\n- Last patch bump before RC2 branch-off
\n- remove
editable: true as this is the default (#1576) \n
\n
\n\nChore
\n\n- completely remove mountPath reference from GUI (#1572)
\n- update helm general non-major helm releases (#1571)
\n
\n
\n\nChore
\n\n- cleanup questions by removing hidden dicts (#1558)
\n- App-Icon Organization (#1539)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1535)
\n
\n
\n\nChore
\n\n- move incubator apps to stable and bump everything
\n
\n
\n\nChore
\n\n- update general helm non-major helm releases (#1509)
\n
\n
\n\nChore
\n\n- update non-major docker (#1507)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1481)
\n
\n
\njellyfin-9.0.18 (2021-12-05)
\nChore
\n\n- bump apps to generate security page
\n- move all container references to TCCR (#1448)
\n- update non-major deps helm releases (#1471)
\n- update non-major deps helm releases (#1468)
\n- update non-major deps helm releases (#1453)
\n- update non-major (#1449)
\n- update non-major deps helm releases (#1432)
\n
\nFix
\n\n- fix typo in theme selection (#1428)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1468)
\n
\n
\n\nChore
\n\n- bump apps to generate security page
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1453)
\n
\n
\n\nChore
\n\n- move all container references to TCCR (#1448)
\n- update non-major (#1449)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1432)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1386)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1383)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1345)
\n
\n
\n\nChore
\n\n- persistence cleanup and small bugfixes (#1329)
\n- update non-major deps helm releases (#1338)
\n
\n
\n\nChore
\n\n- fixes around the GUI refactor (#1316)
\n- move port above advanced in GUI (#1326)
\n- clean up Chart.yaml (#1322)
\n- update non-major deps helm releases (#1328)
\n
\nFix
\n\n- split udp and tcp ports (#1321)
\n- Allow spaces in paths (#1306)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1297)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1295)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1291)
\n
\nChore
\n\n- Simplify GUI for deployment, persistence and securityContext (#1289)
\n
\nFeat
\n\n- Simplify the Services GUI (#1290)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1267)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1264)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1245)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.3.15 (#1240)
\n
\n
\n\nChore
\n\n- Adapt for TrueNAS SCALE RC1
\n
\n
\n\nChore
\n\n- bump apps, remove duplicates and move incubator to stable for RC1
\n
\n
\n\nChore
\n\n- bump versions to rerelease and fix icons
\n
\n
\n\nChange
\n\n- Project-Eclipse 3, Automatically generate item.yaml (#1178)
\n
\nChore
\n\n- Project-Eclipse 5, move app-readme to automatic generation script (#1181)
\n- Project-Eclipse part 2, adapting and cleaning changelog (#1173)
\n- update helm chart common to v8.3.13 (#1184)
\n
\nFeat
\n\n- Project-Eclipse 4, Add App grading annotations to Chart.yaml (#1180)
\n
\nRefactor
\n\n- Project Eclipse Part 6, move questions.yaml to root App folder (#1182)
\n
\n
\n\nFix
\n\n- fix previous SCALE bugfix not correctly being applied
\n
\n
\n\nFix
\n\n- Solve issues regarding ix_values.yaml not containing the image and tag definitions. (#1176)
\n
\n
\n\nChore
\n\n- Add description on persistence (#1172)
\n
\nRefactor
\n\n- Project Eclipse - part 1 - remove ix_values.yaml (#1168)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.3.10 (#1160)
\n
\nFix
\n\n- force users using correct / prefix for mounPath (#1156)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1133)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1126)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1123)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1099)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.0.13 (#1060)
\n
\n
\n\n
\n\n
\n\nChore
\n\n- update non-major deps helm releases (#1014)
\n
\n
\n\nChore
\n\n- move more dockerhub containers to GHCR mirror (#958)
\n- update non-major (#962)
\n
\nFeat
\n\n- add new GUI and VPN support to all Apps (#977)
\n- Add VPN addon and move some config to includes (#973)
\n- pin all container references to digests (#963)
\n- Move some common containers to our own containers
\n
\nFix
\n\n- make sure podSecurityContext is included in both SCALE and Helm installs (#956)
\n
\n
\n\nFix
\n\n- repair Hyperion and some misplaced GUI elements (#922)
\n
"
+ }
+}
\ No newline at end of file
diff --git a/stable/jellyfin/item.yaml b/stable/jellyfin/item.yaml
new file mode 100644
index 0000000..a07a0e9
--- /dev/null
+++ b/stable/jellyfin/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/jellyfin.png
+categories:
+ - media
+screenshots: []
diff --git a/stable/librespeed/12.2.0/.helmignore b/stable/librespeed/12.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/librespeed/12.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/librespeed/12.2.0/CHANGELOG.md b/stable/librespeed/12.2.0/CHANGELOG.md
new file mode 100644
index 0000000..bd886c5
--- /dev/null
+++ b/stable/librespeed/12.2.0/CHANGELOG.md
@@ -0,0 +1,1420 @@
+---
+title: Changelog
+---
+
+## [librespeed-7.0.0](https://github.com/truecharts/charts/compare/librespeed-6.0.41...librespeed-7.0.0) (2022-11-10)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Major Change to GUI
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [librespeed-6.0.44](https://github.com/truecharts/charts/compare/librespeed-6.0.41...librespeed-6.0.44) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [librespeed-6.0.43](https://github.com/truecharts/charts/compare/librespeed-6.0.41...librespeed-6.0.43) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [librespeed-6.0.43](https://github.com/truecharts/charts/compare/librespeed-6.0.41...librespeed-6.0.43) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [librespeed-6.0.43](https://github.com/truecharts/charts/compare/librespeed-6.0.41...librespeed-6.0.43) (2022-11-08)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342))
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [librespeed-6.0.42](https://github.com/truecharts/charts/compare/librespeed-6.0.41...librespeed-6.0.42) (2022-11-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [librespeed-6.0.42](https://github.com/truecharts/charts/compare/librespeed-6.0.41...librespeed-6.0.42) (2022-11-06)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329))
+
+## [librespeed-6.0.41](https://github.com/truecharts/charts/compare/librespeed-6.0.40...librespeed-6.0.41) (2022-11-06)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317))
+
+## [librespeed-6.0.40](https://github.com/truecharts/charts/compare/librespeed-6.0.39...librespeed-6.0.40) (2022-11-05)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308))
+
+## [librespeed-6.0.39](https://github.com/truecharts/charts/compare/librespeed-6.0.38...librespeed-6.0.39) (2022-11-02)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261))
+
+## [librespeed-6.0.38](https://github.com/truecharts/charts/compare/librespeed-6.0.37...librespeed-6.0.38) (2022-10-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182))
+
+## [librespeed-6.0.37](https://github.com/truecharts/charts/compare/librespeed-6.0.36...librespeed-6.0.37) (2022-10-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122))
+
+## [librespeed-6.0.36](https://github.com/truecharts/charts/compare/librespeed-6.0.35...librespeed-6.0.36) (2022-10-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071))
+
+## [librespeed-6.0.35](https://github.com/truecharts/charts/compare/librespeed-6.0.34...librespeed-6.0.35) (2022-10-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major
+
+## [librespeed-6.0.35](https://github.com/truecharts/charts/compare/librespeed-6.0.34...librespeed-6.0.35) (2022-10-07)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major
+
+## [librespeed-6.0.34](https://github.com/truecharts/charts/compare/librespeed-6.0.33...librespeed-6.0.34) (2022-10-05)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979))
+- update helm general non-major
+
+## [librespeed-6.0.33](https://github.com/truecharts/charts/compare/librespeed-6.0.32...librespeed-6.0.33) (2022-09-27)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918))
+
+## [librespeed-6.0.32](https://github.com/truecharts/charts/compare/librespeed-6.0.31...librespeed-6.0.32) (2022-09-25)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-22)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-21)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-21)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-20)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-20)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-19)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-17)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- refactor Services SCALE GUI
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-18)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-16)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-16)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-15)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.31](https://github.com/truecharts/charts/compare/librespeed-6.0.30...librespeed-6.0.31) (2022-09-15)
+
+### Chore
+
+- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))
+- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751))
+
+## [librespeed-6.0.30](https://github.com/truecharts/charts/compare/librespeed-6.0.29...librespeed-6.0.30) (2022-09-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [librespeed-6.0.30](https://github.com/truecharts/charts/compare/librespeed-6.0.29...librespeed-6.0.30) (2022-09-12)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [librespeed-6.0.30](https://github.com/truecharts/charts/compare/librespeed-6.0.29...librespeed-6.0.30) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [librespeed-6.0.30](https://github.com/truecharts/charts/compare/librespeed-6.0.29...librespeed-6.0.30) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [librespeed-6.0.30](https://github.com/truecharts/charts/compare/librespeed-6.0.29...librespeed-6.0.30) (2022-09-11)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [librespeed-6.0.30](https://github.com/truecharts/charts/compare/librespeed-6.0.29...librespeed-6.0.30) (2022-09-11)
+
+### Chore
+
+- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711))
+
+## [librespeed-6.0.29](https://github.com/truecharts/charts/compare/librespeed-6.0.27...librespeed-6.0.29) (2022-08-30)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639))
+- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626))
+
+## [librespeed-6.0.28](https://github.com/truecharts/charts/compare/librespeed-6.0.27...librespeed-6.0.28) (2022-08-30)
+
+### Chore
+
+- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626))
+
+## [librespeed-6.0.27](https://github.com/truecharts/charts/compare/librespeed-6.0.26...librespeed-6.0.27) (2022-08-29)
+
+### Chore
+
+- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619))
+
+## [librespeed-6.0.26](https://github.com/truecharts/charts/compare/librespeed-6.0.25...librespeed-6.0.26) (2022-08-23)
+
+### Chore
+
+- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545))
+
+## [librespeed-6.0.25](https://github.com/truecharts/charts/compare/librespeed-6.0.24...librespeed-6.0.25) (2022-08-12)
+
+### Chore
+
+- add documentation checkbox/section to all SCALE Apps
+- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456))
+
+### Fix
+
+- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447))
+
+## [librespeed-6.0.24](https://github.com/truecharts/charts/compare/librespeed-6.0.23...librespeed-6.0.24) (2022-08-08)
+
+### Chore
+
+- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376))
+- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402))
+
+## [librespeed-6.0.23](https://github.com/truecharts/apps/compare/librespeed-6.0.22...librespeed-6.0.23) (2022-07-26)
+
+### Chore
+
+- update home links ([#3291](https://github.com/truecharts/apps/issues/3291))
+- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302))
+
+## [librespeed-6.0.22](https://github.com/truecharts/apps/compare/librespeed-6.0.21...librespeed-6.0.22) (2022-07-23)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [librespeed-6.0.22](https://github.com/truecharts/apps/compare/librespeed-6.0.21...librespeed-6.0.22) (2022-07-23)
+
+### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [librespeed-6.0.22](https://github.com/truecharts/apps/compare/librespeed-6.0.21...librespeed-6.0.22) (2022-07-23)
+
+### Chore
+
+- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))
+
+## [librespeed-6.0.21](https://github.com/truecharts/apps/compare/librespeed-6.0.19...librespeed-6.0.21) (2022-07-22)
+
+### Chore
+
+- Bump all charts to generate config and container references due to huge increase of repository
+- update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268))
+
+## [librespeed-6.0.19](https://github.com/truecharts/apps/compare/librespeed-6.0.18...librespeed-6.0.19) (2022-07-19)
+
+### Chore
+
+- Update Readme and Description on SCALE
+
+## [librespeed-6.0.18](https://github.com/truecharts/apps/compare/librespeed-6.0.17...librespeed-6.0.18) (2022-07-14)
+
+### Fix
+
+- regenerate catalog and update template
+
+## [librespeed-6.0.17](https://github.com/truecharts/apps/compare/librespeed-6.0.15...librespeed-6.0.17) (2022-07-14)
+
+### Fix
+
+- bump to ensure .helmignore is present on all Charts
+
+## [librespeed-6.0.15](https://github.com/truecharts/apps/compare/librespeed-6.0.13...librespeed-6.0.15) (2022-07-12)
+
+### Chore
+
+- update icons ([#3156](https://github.com/truecharts/apps/issues/3156))
+- bump to cleanup old docs and use correct icon urls
+
+## [librespeed-6.0.13](https://github.com/truecharts/apps/compare/librespeed-6.0.12...librespeed-6.0.13) (2022-07-12)
+
+### Chore
+
+- bump to regenerate documentation
+
+
+
+### [librespeed-6.0.12](https://github.com/truecharts/apps/compare/librespeed-6.0.11...librespeed-6.0.12) (2022-07-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147))
+
+
+
+### [librespeed-6.0.11](https://github.com/truecharts/apps/compare/librespeed-6.0.10...librespeed-6.0.11) (2022-07-11)
+
+#### Chore
+
+- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139))
+
+
+
+### [librespeed-6.0.10](https://github.com/truecharts/apps/compare/librespeed-6.0.9...librespeed-6.0.10) (2022-07-09)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113))
+
+
+
+### [librespeed-6.0.9](https://github.com/truecharts/apps/compare/librespeed-6.0.8...librespeed-6.0.9) (2022-07-04)
+
+#### Chore
+
+- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066))
+
+
+
+### [librespeed-6.0.8](https://github.com/truecharts/apps/compare/librespeed-6.0.7...librespeed-6.0.8) (2022-06-25)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977))
+
+
+
+### [librespeed-6.0.7](https://github.com/truecharts/apps/compare/librespeed-6.0.6...librespeed-6.0.7) (2022-06-22)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948))
+
+
+
+### [librespeed-6.0.6](https://github.com/truecharts/apps/compare/librespeed-6.0.5...librespeed-6.0.6) (2022-06-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943))
+
+
+
+### [librespeed-6.0.5](https://github.com/truecharts/apps/compare/librespeed-6.0.4...librespeed-6.0.5) (2022-06-17)
+
+#### Chore
+
+- Sync questions and values env's ([#2916](https://github.com/truecharts/apps/issues/2916))
+
+
+
+### [librespeed-6.0.4](https://github.com/truecharts/apps/compare/librespeed-6.0.3...librespeed-6.0.4) (2022-06-14)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886))
+
+
+
+### [librespeed-6.0.3](https://github.com/truecharts/apps/compare/librespeed-6.0.2...librespeed-6.0.3) (2022-06-11)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854))
+
+
+
+### [librespeed-6.0.2](https://github.com/truecharts/apps/compare/librespeed-6.0.1...librespeed-6.0.2) (2022-06-07)
+
+#### Fix
+
+- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format.
+
+
+
+### [librespeed-6.0.1](https://github.com/truecharts/apps/compare/librespeed-5.0.19...librespeed-6.0.1) (2022-06-07)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- sync all apps persistence configuration and always default to PVC
+
+#### Fix
+
+- remove malfunctioning SCALE migration script
+
+#### Refactor
+
+- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836))
+
+
+
+### [librespeed-6.0.0](https://github.com/truecharts/apps/compare/librespeed-5.0.19...librespeed-6.0.0) (2022-06-07)
+
+#### Chore
+
+- sync all apps persistence configuration and always default to PVC
+
+#### Refactor
+
+- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836))
+
+
+
+### [librespeed-5.0.19](https://github.com/truecharts/apps/compare/librespeed-5.0.18...librespeed-5.0.19) (2022-05-31)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803))
+
+
+
+### [librespeed-5.0.18](https://github.com/truecharts/apps/compare/librespeed-5.0.17...librespeed-5.0.18) (2022-05-26)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759))
+
+
+
+### [librespeed-5.0.18](https://github.com/truecharts/apps/compare/librespeed-5.0.17...librespeed-5.0.18) (2022-05-26)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759))
+
+
+
+### [librespeed-5.0.17](https://github.com/truecharts/apps/compare/librespeed-5.0.16...librespeed-5.0.17) (2022-05-24)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [librespeed-5.0.16](https://github.com/truecharts/apps/compare/librespeed-5.0.15...librespeed-5.0.16) (2022-05-17)
+
+#### Chore
+
+- Auto-update chart README [skip ci]
+- update helm general non-major helm releases
+
+
+
+### [librespeed-5.0.16](https://github.com/truecharts/apps/compare/librespeed-5.0.15...librespeed-5.0.16) (2022-05-17)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [librespeed-5.0.15](https://github.com/truecharts/apps/compare/librespeed-5.0.14...librespeed-5.0.15) (2022-05-17)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [librespeed-5.0.14](https://github.com/truecharts/apps/compare/librespeed-5.0.13...librespeed-5.0.14) (2022-05-10)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649))
+
+
+
+### [librespeed-5.0.13](https://github.com/truecharts/apps/compare/librespeed-5.0.12...librespeed-5.0.13) (2022-05-05)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612))
+
+
+
+### [librespeed-5.0.12](https://github.com/truecharts/apps/compare/librespeed-5.0.11...librespeed-5.0.12) (2022-04-26)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573))
+
+
+
+### [librespeed-5.0.11](https://github.com/truecharts/apps/compare/librespeed-5.0.10...librespeed-5.0.11) (2022-04-20)
+
+#### Chore
+
+- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515))
+- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524))
+
+
+
+### [librespeed-5.0.10](https://github.com/truecharts/apps/compare/librespeed-5.0.9...librespeed-5.0.10) (2022-04-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480))
+
+
+
+### [librespeed-5.0.9](https://github.com/truecharts/apps/compare/librespeed-5.0.8...librespeed-5.0.9) (2022-04-03)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410))
+
+
+
+### [librespeed-5.0.8](https://github.com/truecharts/apps/compare/librespeed-5.0.7...librespeed-5.0.8) (2022-03-31)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361))
+
+
+
+### [librespeed-5.0.7](https://github.com/truecharts/apps/compare/librespeed-5.0.6...librespeed-5.0.7) (2022-03-30)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354))
+
+
+
+### [librespeed-5.0.6](https://github.com/truecharts/apps/compare/librespeed-5.0.5...librespeed-5.0.6) (2022-03-26)
+
+#### Chore
+
+- bump all apps to trigger ci
+
+
+
+### [librespeed-5.0.1](https://github.com/truecharts/apps/compare/librespeed-5.0.0...librespeed-5.0.1) (2022-03-07)
+
+#### Chore
+
+- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111))
+- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040))
+
+
+
+### [librespeed-5.0.0](https://github.com/truecharts/apps/compare/librespeed-4.0.46...librespeed-5.0.0) (2022-03-03)
+
+#### Chore
+
+- remove fixed env from questions.yaml
+- remove PUID from per-app env-vars if set to 568
+- remove empty env var declaration from questions.yaml
+- remove TZ from values. ([#1945](https://github.com/truecharts/apps/issues/1945))
+- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021))
+
+#### Fix
+
+- BREAKING CHANGE Move some env-vars outside of env section ([#2010](https://github.com/truecharts/apps/issues/2010))
+
+
+
+### [librespeed-4.0.46](https://github.com/truecharts/apps/compare/librespeed-4.0.45...librespeed-4.0.46) (2022-03-02)
+
+#### Chore
+
+- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957))
+- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999))
+
+
+
+### [librespeed-4.0.45](https://github.com/truecharts/apps/compare/librespeed-4.0.44...librespeed-4.0.45) (2022-02-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927))
+
+
+
+### [librespeed-4.0.44](https://github.com/truecharts/apps/compare/librespeed-4.0.43...librespeed-4.0.44) (2022-02-15)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901))
+
+
+
+### [librespeed-4.0.43](https://github.com/truecharts/apps/compare/librespeed-4.0.42...librespeed-4.0.43) (2022-02-08)
+
+#### Chore
+
+- fix links on `Chart.yaml` ([#1862](https://github.com/truecharts/apps/issues/1862))
+- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871))
+
+
+
+### [librespeed-4.0.42](https://github.com/truecharts/apps/compare/librespeed-4.0.41...librespeed-4.0.42) (2022-02-06)
+
+#### Chore
+
+- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859))
+
+
+
+### [librespeed-4.0.41](https://github.com/truecharts/apps/compare/librespeed-4.0.40...librespeed-4.0.41) (2022-02-05)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852))
+
+
+
+### [librespeed-4.0.40](https://github.com/truecharts/apps/compare/librespeed-4.0.39...librespeed-4.0.40) (2022-02-02)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828))
+
+
+
+### [librespeed-4.0.39](https://github.com/truecharts/apps/compare/librespeed-4.0.38...librespeed-4.0.39) (2022-01-25)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791))
+
+
+
+### [librespeed-4.0.38](https://github.com/truecharts/apps/compare/librespeed-4.0.37...librespeed-4.0.38) (2022-01-22)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766))
+
+
+
+### [librespeed-4.0.37](https://github.com/truecharts/apps/compare/librespeed-4.0.36...librespeed-4.0.37) (2022-01-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759))
+
+#### Fix
+
+- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750))
+
+
+
+### [librespeed-4.0.36](https://github.com/truecharts/apps/compare/librespeed-4.0.35...librespeed-4.0.36) (2022-01-18)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1732](https://github.com/truecharts/apps/issues/1732))
+
+
+
+### [librespeed-4.0.35](https://github.com/truecharts/apps/compare/librespeed-4.0.34...librespeed-4.0.35) (2022-01-13)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712))
+
+#### Feat
+
+- expose capabilities in GUI ([#1709](https://github.com/truecharts/apps/issues/1709))
+
+
+
+### [librespeed-4.0.34](https://github.com/truecharts/apps/compare/librespeed-4.0.33...librespeed-4.0.34) (2022-01-12)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704))
+
+
+
+### [librespeed-4.0.33](https://github.com/truecharts/apps/compare/librespeed-4.0.32...librespeed-4.0.33) (2022-01-11)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693))
+
+
+
+### [librespeed-4.0.32](https://github.com/truecharts/apps/compare/librespeed-4.0.31...librespeed-4.0.32) (2022-01-04)
+
+#### Chore
+
+- update helm general non-major helm releases
+
+
+
+### [librespeed-4.0.31](https://github.com/truecharts/apps/compare/librespeed-4.0.30...librespeed-4.0.31) (2021-12-28)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623))
+
+
+
+### [librespeed-4.0.30](https://github.com/truecharts/apps/compare/librespeed-4.0.29...librespeed-4.0.30) (2021-12-21)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596))
+
+
+
+### [librespeed-4.0.29](https://github.com/truecharts/apps/compare/librespeed-4.0.28...librespeed-4.0.29) (2021-12-19)
+
+#### Chore
+
+- Last patch bump before RC2 branch-off
+- remove `editable: true` as this is the default ([#1576](https://github.com/truecharts/apps/issues/1576))
+
+
+
+### [librespeed-4.0.28](https://github.com/truecharts/apps/compare/librespeed-4.0.27...librespeed-4.0.28) (2021-12-19)
+
+#### Chore
+
+- completely remove mountPath reference from GUI ([#1572](https://github.com/truecharts/apps/issues/1572))
+- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571))
+
+
+
+### [librespeed-4.0.27](https://github.com/truecharts/apps/compare/librespeed-4.0.26...librespeed-4.0.27) (2021-12-18)
+
+#### Chore
+
+- cleanup questions by removing hidden dicts ([#1558](https://github.com/truecharts/apps/issues/1558))
+- App-Icon Organization ([#1539](https://github.com/truecharts/apps/issues/1539))
+
+
+
+### [librespeed-4.0.26](https://github.com/truecharts/apps/compare/librespeed-4.0.25...librespeed-4.0.26) (2021-12-14)
+
+#### Chore
+
+- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535))
+
+
+
+### [librespeed-4.0.25](https://github.com/truecharts/apps/compare/librespeed-4.0.24...librespeed-4.0.25) (2021-12-13)
+
+#### Chore
+
+- move incubator apps to stable and bump everything
+
+
+
+### [librespeed-4.0.24](https://github.com/truecharts/apps/compare/librespeed-4.0.23...librespeed-4.0.24) (2021-12-11)
+
+#### Chore
+
+- set PUID to `int` instead of `string` ([#1506](https://github.com/truecharts/apps/issues/1506))
+- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509))
+
+
+
+### [librespeed-4.0.23](https://github.com/truecharts/apps/compare/librespeed-4.0.22...librespeed-4.0.23) (2021-12-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481))
+
+
+
+### librespeed-4.0.22 (2021-12-05)
+
+#### Chore
+
+- bump apps to generate security page
+- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448))
+- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471))
+- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468))
+- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453))
+- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449))
+- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432))
+- update non-major ([#1427](https://github.com/truecharts/apps/issues/1427))
+
+#### Fix
+
+- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428))
+
+
+
+### [librespeed-4.0.21](https://github.com/truecharts/apps/compare/librespeed-4.0.20...librespeed-4.0.21) (2021-12-05)
+
+#### Chore
+
+- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468))
+
+
+
+### [librespeed-4.0.20](https://github.com/truecharts/apps/compare/librespeed-4.0.19...librespeed-4.0.20) (2021-12-04)
+
+#### Chore
+
+- bump apps to generate security page
+
+
+
+### [librespeed-4.0.19](https://github.com/truecharts/apps/compare/librespeed-4.0.18...librespeed-4.0.19) (2021-12-04)
+
+#### Chore
+
+- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453))
+
+
+
+### [librespeed-4.0.18](https://github.com/truecharts/apps/compare/librespeed-4.0.17...librespeed-4.0.18) (2021-12-03)
+
+#### Chore
+
+- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448))
+- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449))
+
+
+
+### [librespeed-4.0.17](https://github.com/truecharts/apps/compare/librespeed-4.0.16...librespeed-4.0.17) (2021-11-30)
+
+#### Chore
+
+- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432))
+
+
+
+### [librespeed-4.0.16](https://github.com/truecharts/apps/compare/librespeed-4.0.15...librespeed-4.0.16) (2021-11-30)
+
+#### Chore
+
+- update non-major ([#1427](https://github.com/truecharts/apps/issues/1427))
+
+#### Fix
+
+- move conflicting ports to 10xxx range ([#1415](https://github.com/truecharts/apps/issues/1415))
+
+
+
+### [librespeed-4.0.15](https://github.com/truecharts/apps/compare/librespeed-4.0.14...librespeed-4.0.15) (2021-11-23)
+
+#### Chore
+
+- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386))
+
+
+
+### [librespeed-4.0.14](https://github.com/truecharts/apps/compare/librespeed-4.0.13...librespeed-4.0.14) (2021-11-23)
+
+#### Chore
+
+- update non-major ([#1384](https://github.com/truecharts/apps/issues/1384))
+
+
+
+### [librespeed-4.0.13](https://github.com/truecharts/apps/compare/librespeed-4.0.12...librespeed-4.0.13) (2021-11-22)
+
+#### Chore
+
+- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383))
+
+
+
+### [librespeed-4.0.12](https://github.com/truecharts/apps/compare/librespeed-4.0.11...librespeed-4.0.12) (2021-11-16)
+
+#### Chore
+
+- update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345))
+
+
+
+### [librespeed-4.0.11](https://github.com/truecharts/apps/compare/librespeed-4.0.10...librespeed-4.0.11) (2021-11-16)
+
+#### Chore
+
+- update non-major ([#1342](https://github.com/truecharts/apps/issues/1342))
+
+
+
+### [librespeed-4.0.10](https://github.com/truecharts/apps/compare/librespeed-4.0.9...librespeed-4.0.10) (2021-11-15)
+
+#### Chore
+
+- persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329))
+- update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338))
+
+
+
+### [librespeed-4.0.9](https://github.com/truecharts/apps/compare/librespeed-4.0.8...librespeed-4.0.9) (2021-11-14)
+
+#### Chore
+
+- fixes around the GUI refactor ([#1316](https://github.com/truecharts/apps/issues/1316))
+- move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326))
+- clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322))
+- update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328))
+
+#### Fix
+
+- split udp and tcp ports ([#1321](https://github.com/truecharts/apps/issues/1321))
+- Allow spaces in paths ([#1306](https://github.com/truecharts/apps/issues/1306))
+
+
+
+### [librespeed-4.0.8](https://github.com/truecharts/apps/compare/librespeed-4.0.7...librespeed-4.0.8) (2021-11-09)
+
+#### Chore
+
+- update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297))
+
+
+
+### [librespeed-4.0.7](https://github.com/truecharts/apps/compare/librespeed-4.0.6...librespeed-4.0.7) (2021-11-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295))
+
+
+
+### [librespeed-4.0.6](https://github.com/truecharts/apps/compare/librespeed-4.0.5...librespeed-4.0.6) (2021-11-07)
+
+#### Chore
+
+- update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291))
+
+#### Chore
+
+- Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289))
+
+#### Feat
+
+- Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290))
+
+
+
+### [librespeed-4.0.5](https://github.com/truecharts/apps/compare/librespeed-4.0.4...librespeed-4.0.5) (2021-11-02)
+
+#### Chore
+
+- update non-major deps helm releases ([#1267](https://github.com/truecharts/apps/issues/1267))
+
+
+
+### [librespeed-4.0.4](https://github.com/truecharts/apps/compare/librespeed-4.0.3...librespeed-4.0.4) (2021-11-02)
+
+#### Chore
+
+- update non-major docker tags ([#1266](https://github.com/truecharts/apps/issues/1266))
+
+
+
+### [librespeed-4.0.3](https://github.com/truecharts/apps/compare/librespeed-4.0.2...librespeed-4.0.3) (2021-11-01)
+
+#### Chore
+
+- update non-major deps helm releases ([#1264](https://github.com/truecharts/apps/issues/1264))
+
+
+
+### [librespeed-4.0.2](https://github.com/truecharts/apps/compare/librespeed-4.0.1...librespeed-4.0.2) (2021-10-26)
+
+#### Chore
+
+- update non-major deps helm releases ([#1245](https://github.com/truecharts/apps/issues/1245))
+
+
+
+### [librespeed-4.0.1](https://github.com/truecharts/apps/compare/librespeed-4.0.0...librespeed-4.0.1) (2021-10-26)
+
+#### Chore
+
+- update helm chart common to v8.3.15 ([#1240](https://github.com/truecharts/apps/issues/1240))
+- update non-major ([#1232](https://github.com/truecharts/apps/issues/1232))
+
+
+
+### [librespeed-4.0.0](https://github.com/truecharts/apps/compare/librespeed-3.0.20...librespeed-4.0.0) (2021-10-25)
+
+#### Chore
+
+- Adapt for TrueNAS SCALE RC1
+
+
+
+### [librespeed-3.0.20](https://github.com/truecharts/apps/compare/librespeed-1.0.0...librespeed-3.0.20) (2021-10-20)
+
+#### Chore
+
+- bump apps, remove duplicates and move incubator to stable for RC1
+- update non-major deps helm releases ([#1213](https://github.com/truecharts/apps/issues/1213))
+
+#### Fix
+
+- reenable postgresql migration scripting and bump all to force update
+
+
+
+### [librespeed-3.0.17](https://github.com/truecharts/apps/compare/librespeed-0.0.3...librespeed-3.0.17) (2021-10-20)
+
+#### Chore
+
+- bump versions to rerelease and fix icons
+
+
+
+### [librespeed-3.0.16](https://github.com/truecharts/apps/compare/librespeed-0.0.2...librespeed-3.0.16) (2021-10-19)
+
+#### Change
+
+- Project-Eclipse 3, Automatically generate item.yaml ([#1178](https://github.com/truecharts/apps/issues/1178))
+
+#### Chore
+
+- Project-Eclipse 5, move app-readme to automatic generation script ([#1181](https://github.com/truecharts/apps/issues/1181))
+- update helm chart common to v8.3.13 ([#1184](https://github.com/truecharts/apps/issues/1184))
+- update non-major ([#1174](https://github.com/truecharts/apps/issues/1174))
+
+#### Feat
+
+- Project-Eclipse 4, Add App grading annotations to Chart.yaml ([#1180](https://github.com/truecharts/apps/issues/1180))
+
+#### Refactor
+
+- Project Eclipse Part 6, move questions.yaml to root App folder ([#1182](https://github.com/truecharts/apps/issues/1182))
+
+
+
+### [librespeed-3.0.15](https://github.com/truecharts/apps/compare/librespeed-0.0.1...librespeed-3.0.15) (2021-10-19)
+
+#### Chore
+
+- Project-Eclipse part 2, adapting and cleaning changelog ([#1173](https://github.com/truecharts/apps/issues/1173))
+- update helm chart postgresql to v3.0.20 ([#1177](https://github.com/truecharts/apps/issues/1177))
+
+
+
+### [librespeed-3.0.14](https://github.com/truecharts/apps/compare/librespeed-3.0.13...librespeed-3.0.14) (2021-10-19)
+
+#### Fix
+
+- fix previous SCALE bugfix not correctly being applied
+
+
+
+### [librespeed-3.0.13](https://github.com/truecharts/apps/compare/librespeed-3.0.12...librespeed-3.0.13) (2021-10-19)
+
+#### Fix
+
+- Solve issues regarding ix_values.yaml not containing the image and tag definitions. ([#1176](https://github.com/truecharts/apps/issues/1176))
+
+
+
+### [librespeed-3.0.12](https://github.com/truecharts/apps/compare/librespeed-3.0.11...librespeed-3.0.12) (2021-10-18)
+
+#### Chore
+
+- Add description on persistence ([#1172](https://github.com/truecharts/apps/issues/1172))
+
+#### Refactor
+
+- Project Eclipse - part 1 - remove ix_values.yaml ([#1168](https://github.com/truecharts/apps/issues/1168))
+
+
+
+### [librespeed-3.0.11](https://github.com/truecharts/apps/compare/librespeed-3.0.10...librespeed-3.0.11) (2021-10-17)
+
+#### Chore
+
+- update helm chart common to v8.3.10 ([#1160](https://github.com/truecharts/apps/issues/1160))
+
+#### Fix
+
+- force users using correct / prefix for mounPath ([#1156](https://github.com/truecharts/apps/issues/1156))
+
+
+
+### [librespeed-3.0.10](https://github.com/truecharts/apps/compare/librespeed-3.0.9...librespeed-3.0.10) (2021-10-13)
+
+#### Chore
+
+- update non-major deps helm releases ([#1133](https://github.com/truecharts/apps/issues/1133))
+
+
+
+### [librespeed-3.0.9](https://github.com/truecharts/apps/compare/librespeed-3.0.8...librespeed-3.0.9) (2021-10-12)
+
+#### Chore
+
+- update non-major deps helm releases ([#1126](https://github.com/truecharts/apps/issues/1126))
+
+
+
+### [librespeed-3.0.8](https://github.com/truecharts/apps/compare/librespeed-3.0.7...librespeed-3.0.8) (2021-10-12)
+
+#### Chore
+
+- update non-major ([#1122](https://github.com/truecharts/apps/issues/1122))
+
+
+
+### [librespeed-3.0.7](https://github.com/truecharts/apps/compare/librespeed-3.0.6...librespeed-3.0.7) (2021-10-12)
+
+#### Chore
+
+- update non-major deps helm releases ([#1123](https://github.com/truecharts/apps/issues/1123))
+
+
+
+### [librespeed-3.0.6](https://github.com/truecharts/apps/compare/librespeed-3.0.5...librespeed-3.0.6) (2021-10-05)
+
+#### Chore
+
+- update non-major deps helm releases ([#1099](https://github.com/truecharts/apps/issues/1099))
+
+
+
+### [librespeed-3.0.5](https://github.com/truecharts/apps/compare/librespeed-3.0.4...librespeed-3.0.5) (2021-10-05)
+
+#### Chore
+
+- update non-major ([#1098](https://github.com/truecharts/apps/issues/1098))
+
+
+
+### [librespeed-3.0.4](https://github.com/truecharts/apps/compare/librespeed-3.0.3...librespeed-3.0.4) (2021-09-29)
+
+#### Chore
+
+- update helm chart common to v8.0.13 ([#1060](https://github.com/truecharts/apps/issues/1060))
+
+
+
+### [librespeed-3.0.2](https://github.com/truecharts/apps/compare/librespeed-3.0.1...librespeed-3.0.2) (2021-09-28)
+
+#### Chore
+
+- update non-major ([#1048](https://github.com/truecharts/apps/issues/1048))
+
+
+
+### [librespeed-3.0.1](https://github.com/truecharts/apps/compare/librespeed-3.0.0...librespeed-3.0.1) (2021-09-26)
+
+
+
+### [librespeed-3.0.0](https://github.com/truecharts/apps/compare/librespeed-2.0.3...librespeed-3.0.0) (2021-09-26)
+
+
+
+### [librespeed-2.0.3](https://github.com/truecharts/apps/compare/librespeed-2.0.2...librespeed-2.0.3) (2021-09-21)
+
+#### Chore
+
+- update non-major deps helm releases ([#1014](https://github.com/truecharts/apps/issues/1014))
+
+
+
+### [librespeed-2.0.2](https://github.com/truecharts/apps/compare/librespeed-2.0.1...librespeed-2.0.2) (2021-09-21)
+
+#### Chore
+
+- update non-major ([#1015](https://github.com/truecharts/apps/issues/1015))
+
+
+
+### [librespeed-2.0.1](https://github.com/truecharts/apps/compare/librespeed-1.9.15...librespeed-2.0.1) (2021-09-13)
+
+#### Chore
+
+- move all LSIO containers to github registry ([#957](https://github.com/truecharts/apps/issues/957))
+- update non-major ([#962](https://github.com/truecharts/apps/issues/962))
+
+#### Feat
+
+- add new GUI and VPN support to all Apps ([#977](https://github.com/truecharts/apps/issues/977))
+- Add VPN addon and move some config to includes ([#973](https://github.com/truecharts/apps/issues/973))
+- pin all container references to digests ([#963](https://github.com/truecharts/apps/issues/963))
+- Move some common containers to our own containers
+
+
+
+## [librespeed-1.9.15](https://github.com/truecharts/apps/compare/librespeed-1.9.14...librespeed-1.9.15) (2021-09-08)
+
+### Fix
+
+- repair Hyperion and some misplaced GUI elements ([#922](https://github.com/truecharts/apps/issues/922))
diff --git a/stable/librespeed/12.2.0/Chart.yaml b/stable/librespeed/12.2.0/Chart.yaml
new file mode 100644
index 0000000..195ffce
--- /dev/null
+++ b/stable/librespeed/12.2.0/Chart.yaml
@@ -0,0 +1,37 @@
+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.3.0
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Librespeed is a HTML5 webpage to test upload and download speeds
+home: https://truecharts.org/charts/stable/librespeed
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+keywords:
+ - librespeed
+ - speedtest
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: librespeed
+sources:
+ - https://github.com/librespeed/speedtest
+ - https://github.com/truecharts/charts/tree/master/charts/stable/librespeed
+ - https://ghcr.io/linuxserver/librespeed
+type: application
+version: 12.2.0
diff --git a/stable/librespeed/12.2.0/README.md b/stable/librespeed/12.2.0/README.md
new file mode 100644
index 0000000..e7948fa
--- /dev/null
+++ b/stable/librespeed/12.2.0/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/librespeed)
+
+**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/librespeed/12.2.0/app-readme.md b/stable/librespeed/12.2.0/app-readme.md
new file mode 100644
index 0000000..7e86075
--- /dev/null
+++ b/stable/librespeed/12.2.0/app-readme.md
@@ -0,0 +1,8 @@
+Librespeed is a HTML5 webpage to test upload and download speeds
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/librespeed](https://truecharts.org/charts/stable/librespeed)
+
+---
+
+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/librespeed/12.2.0/charts/common-17.4.2.tgz b/stable/librespeed/12.2.0/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/librespeed/12.2.0/charts/common-17.4.2.tgz differ
diff --git a/stable/librespeed/12.2.0/ix_values.yaml b/stable/librespeed/12.2.0/ix_values.yaml
new file mode 100644
index 0000000..6747483
--- /dev/null
+++ b/stable/librespeed/12.2.0/ix_values.yaml
@@ -0,0 +1,23 @@
+image:
+ repository: ghcr.io/linuxserver/librespeed
+ tag: 5.3.0@sha256:d9c4605e8a3821764926aeaebb1b67b889a54fdf72031703ecfe2c70bc043d9b
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10016
+ targetPort: 80
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
diff --git a/stable/librespeed/12.2.0/questions.yaml b/stable/librespeed/12.2.0/questions.yaml
new file mode 100644
index 0000000..c0a34b3
--- /dev/null
+++ b/stable/librespeed/12.2.0/questions.yaml
@@ -0,0 +1,2867 @@
+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: 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: 10016
+ 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: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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: '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/librespeed/12.2.0/templates/NOTES.txt b/stable/librespeed/12.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/librespeed/12.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/librespeed/12.2.0/templates/common.yaml b/stable/librespeed/12.2.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/librespeed/12.2.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/librespeed/12.2.0/values.yaml b/stable/librespeed/12.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/librespeed/12.2.1/.helmignore b/stable/librespeed/12.2.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/librespeed/12.2.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/librespeed/12.2.1/CHANGELOG.md b/stable/librespeed/12.2.1/CHANGELOG.md
new file mode 100644
index 0000000..053f8b5
--- /dev/null
+++ b/stable/librespeed/12.2.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## [librespeed-12.1.17](https://github.com/truecharts/charts/compare/librespeed-12.1.16...librespeed-12.1.17) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@d9c4605](https://github.com/d9c4605) by renovate ([#18066](https://github.com/truecharts/charts/issues/18066))
+
+
+## [librespeed-12.1.16](https://github.com/truecharts/charts/compare/librespeed-12.1.15...librespeed-12.1.16) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@8e56f58](https://github.com/8e56f58) by renovate ([#17856](https://github.com/truecharts/charts/issues/17856))
+
+
+## [librespeed-12.1.15](https://github.com/truecharts/charts/compare/librespeed-12.1.14...librespeed-12.1.15) (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))
+
+
+## [librespeed-12.1.14](https://github.com/truecharts/charts/compare/librespeed-12.1.13...librespeed-12.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@e7e8a14](https://github.com/e7e8a14) by renovate ([#17611](https://github.com/truecharts/charts/issues/17611))
+
+
+## [librespeed-12.1.13](https://github.com/truecharts/charts/compare/librespeed-12.1.12...librespeed-12.1.13) (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))
+
+
+## [librespeed-12.1.12](https://github.com/truecharts/charts/compare/librespeed-12.1.11...librespeed-12.1.12) (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))
+
+
+## [librespeed-12.1.11](https://github.com/truecharts/charts/compare/librespeed-12.1.10...librespeed-12.1.11) (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))
+
+
+## [librespeed-12.1.10](https://github.com/truecharts/charts/compare/librespeed-12.1.9...librespeed-12.1.10) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [librespeed-12.1.9](https://github.com/truecharts/charts/compare/librespeed-12.1.8...librespeed-12.1.9) (2024-01-21)
+
+### Chore
+
diff --git a/stable/librespeed/12.2.1/Chart.yaml b/stable/librespeed/12.2.1/Chart.yaml
new file mode 100644
index 0000000..bba5bd7
--- /dev/null
+++ b/stable/librespeed/12.2.1/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.3.0
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Librespeed is a HTML5 webpage to test upload and download speeds
+home: https://truecharts.org/charts/stable/librespeed
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+keywords:
+ - librespeed
+ - speedtest
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: librespeed
+sources:
+ - https://github.com/librespeed/speedtest
+ - https://github.com/truecharts/charts/tree/master/charts/stable/librespeed
+ - https://ghcr.io/linuxserver/librespeed
+type: application
+version: 12.2.1
diff --git a/stable/librespeed/12.2.1/README.md b/stable/librespeed/12.2.1/README.md
new file mode 100644
index 0000000..e7948fa
--- /dev/null
+++ b/stable/librespeed/12.2.1/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/librespeed)
+
+**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/librespeed/12.2.1/app-readme.md b/stable/librespeed/12.2.1/app-readme.md
new file mode 100644
index 0000000..7e86075
--- /dev/null
+++ b/stable/librespeed/12.2.1/app-readme.md
@@ -0,0 +1,8 @@
+Librespeed is a HTML5 webpage to test upload and download speeds
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/librespeed](https://truecharts.org/charts/stable/librespeed)
+
+---
+
+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/librespeed/12.2.1/charts/common-17.4.2.tgz b/stable/librespeed/12.2.1/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/librespeed/12.2.1/charts/common-17.4.2.tgz differ
diff --git a/stable/librespeed/12.2.1/ix_values.yaml b/stable/librespeed/12.2.1/ix_values.yaml
new file mode 100644
index 0000000..36c8992
--- /dev/null
+++ b/stable/librespeed/12.2.1/ix_values.yaml
@@ -0,0 +1,23 @@
+image:
+ repository: ghcr.io/linuxserver/librespeed
+ tag: 5.3.0@sha256:4e6e49c172ac10073036fbe3d8f64466843c705da3bee16c84cb8886bbb6693c
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10016
+ targetPort: 80
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
diff --git a/stable/librespeed/12.2.1/questions.yaml b/stable/librespeed/12.2.1/questions.yaml
new file mode 100644
index 0000000..c0a34b3
--- /dev/null
+++ b/stable/librespeed/12.2.1/questions.yaml
@@ -0,0 +1,2867 @@
+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: 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: 10016
+ 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: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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: '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/librespeed/12.2.1/templates/NOTES.txt b/stable/librespeed/12.2.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/librespeed/12.2.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/librespeed/12.2.1/templates/common.yaml b/stable/librespeed/12.2.1/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/librespeed/12.2.1/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/librespeed/12.2.1/values.yaml b/stable/librespeed/12.2.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/librespeed/12.3.0/.helmignore b/stable/librespeed/12.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/librespeed/12.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/librespeed/12.3.0/CHANGELOG.md b/stable/librespeed/12.3.0/CHANGELOG.md
new file mode 100644
index 0000000..329f99a
--- /dev/null
+++ b/stable/librespeed/12.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## [librespeed-12.1.17](https://github.com/truecharts/charts/compare/librespeed-12.1.16...librespeed-12.1.17) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@d9c4605](https://github.com/d9c4605) by renovate ([#18066](https://github.com/truecharts/charts/issues/18066))
+
+
+## [librespeed-12.1.16](https://github.com/truecharts/charts/compare/librespeed-12.1.15...librespeed-12.1.16) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@8e56f58](https://github.com/8e56f58) by renovate ([#17856](https://github.com/truecharts/charts/issues/17856))
+
+
+## [librespeed-12.1.15](https://github.com/truecharts/charts/compare/librespeed-12.1.14...librespeed-12.1.15) (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))
+
+
+## [librespeed-12.1.14](https://github.com/truecharts/charts/compare/librespeed-12.1.13...librespeed-12.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@e7e8a14](https://github.com/e7e8a14) by renovate ([#17611](https://github.com/truecharts/charts/issues/17611))
+
+
+## [librespeed-12.1.13](https://github.com/truecharts/charts/compare/librespeed-12.1.12...librespeed-12.1.13) (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))
+
+
+## [librespeed-12.1.12](https://github.com/truecharts/charts/compare/librespeed-12.1.11...librespeed-12.1.12) (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))
+
+
+## [librespeed-12.1.11](https://github.com/truecharts/charts/compare/librespeed-12.1.10...librespeed-12.1.11) (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))
+
+
+## [librespeed-12.1.10](https://github.com/truecharts/charts/compare/librespeed-12.1.9...librespeed-12.1.10) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
+
+
+## [librespeed-12.1.9](https://github.com/truecharts/charts/compare/librespeed-12.1.8...librespeed-12.1.9) (2024-01-21)
+
+### Chore
diff --git a/stable/librespeed/12.3.0/Chart.yaml b/stable/librespeed/12.3.0/Chart.yaml
new file mode 100644
index 0000000..fdb396e
--- /dev/null
+++ b/stable/librespeed/12.3.0/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.3.0
+dependencies:
+ - name: common
+ version: 17.5.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Librespeed is a HTML5 webpage to test upload and download speeds
+home: https://truecharts.org/charts/stable/librespeed
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+keywords:
+ - librespeed
+ - speedtest
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: librespeed
+sources:
+ - https://github.com/librespeed/speedtest
+ - https://github.com/truecharts/charts/tree/master/charts/stable/librespeed
+ - https://ghcr.io/linuxserver/librespeed
+type: application
+version: 12.3.0
diff --git a/stable/librespeed/12.3.0/README.md b/stable/librespeed/12.3.0/README.md
new file mode 100644
index 0000000..e7948fa
--- /dev/null
+++ b/stable/librespeed/12.3.0/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/librespeed)
+
+**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/librespeed/12.3.0/app-readme.md b/stable/librespeed/12.3.0/app-readme.md
new file mode 100644
index 0000000..7e86075
--- /dev/null
+++ b/stable/librespeed/12.3.0/app-readme.md
@@ -0,0 +1,8 @@
+Librespeed is a HTML5 webpage to test upload and download speeds
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/librespeed](https://truecharts.org/charts/stable/librespeed)
+
+---
+
+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/librespeed/12.3.0/charts/common-17.5.0.tgz b/stable/librespeed/12.3.0/charts/common-17.5.0.tgz
new file mode 100644
index 0000000..3a55348
Binary files /dev/null and b/stable/librespeed/12.3.0/charts/common-17.5.0.tgz differ
diff --git a/stable/librespeed/12.3.0/ix_values.yaml b/stable/librespeed/12.3.0/ix_values.yaml
new file mode 100644
index 0000000..36c8992
--- /dev/null
+++ b/stable/librespeed/12.3.0/ix_values.yaml
@@ -0,0 +1,23 @@
+image:
+ repository: ghcr.io/linuxserver/librespeed
+ tag: 5.3.0@sha256:4e6e49c172ac10073036fbe3d8f64466843c705da3bee16c84cb8886bbb6693c
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10016
+ targetPort: 80
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
diff --git a/stable/librespeed/12.3.0/questions.yaml b/stable/librespeed/12.3.0/questions.yaml
new file mode 100644
index 0000000..c0a34b3
--- /dev/null
+++ b/stable/librespeed/12.3.0/questions.yaml
@@ -0,0 +1,2867 @@
+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: 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: 10016
+ 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: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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: '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/librespeed/12.3.0/templates/NOTES.txt b/stable/librespeed/12.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/librespeed/12.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/librespeed/12.3.0/templates/common.yaml b/stable/librespeed/12.3.0/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/librespeed/12.3.0/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/librespeed/12.3.0/values.yaml b/stable/librespeed/12.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/librespeed/13.7.2/.helmignore b/stable/librespeed/13.7.2/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/librespeed/13.7.2/.helmignore
@@ -0,0 +1,30 @@
+# 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/librespeed/13.7.2/CHANGELOG.md b/stable/librespeed/13.7.2/CHANGELOG.md
new file mode 100644
index 0000000..4247e4f
--- /dev/null
+++ b/stable/librespeed/13.7.2/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
diff --git a/stable/librespeed/13.7.2/Chart.yaml b/stable/librespeed/13.7.2/Chart.yaml
new file mode 100644
index 0000000..e7b6877
--- /dev/null
+++ b/stable/librespeed/13.7.2/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 5.3.0
+dependencies:
+ - name: common
+ version: 20.2.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Librespeed is a HTML5 webpage to test upload and download speeds
+home: https://truecharts.org/charts/stable/librespeed
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+keywords:
+ - librespeed
+ - speedtest
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: librespeed
+sources:
+ - https://github.com/librespeed/speedtest
+ - https://github.com/truecharts/charts/tree/master/charts/stable/librespeed
+ - https://ghcr.io/linuxserver/librespeed
+type: application
+version: 13.7.2
diff --git a/stable/librespeed/13.7.2/README.md b/stable/librespeed/13.7.2/README.md
new file mode 100644
index 0000000..e7948fa
--- /dev/null
+++ b/stable/librespeed/13.7.2/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/librespeed)
+
+**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/librespeed/13.7.2/app-changelog.md b/stable/librespeed/13.7.2/app-changelog.md
new file mode 100644
index 0000000..4c98f08
--- /dev/null
+++ b/stable/librespeed/13.7.2/app-changelog.md
@@ -0,0 +1,13 @@
+
+
+## [librespeed-13.7.2](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.2) (2024-03-18)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/librespeed/13.7.2/app-readme.md b/stable/librespeed/13.7.2/app-readme.md
new file mode 100644
index 0000000..7e86075
--- /dev/null
+++ b/stable/librespeed/13.7.2/app-readme.md
@@ -0,0 +1,8 @@
+Librespeed is a HTML5 webpage to test upload and download speeds
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/librespeed](https://truecharts.org/charts/stable/librespeed)
+
+---
+
+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/librespeed/13.7.2/charts/common-20.2.2.tgz b/stable/librespeed/13.7.2/charts/common-20.2.2.tgz
new file mode 100644
index 0000000..a03705c
Binary files /dev/null and b/stable/librespeed/13.7.2/charts/common-20.2.2.tgz differ
diff --git a/stable/librespeed/13.7.2/ix_values.yaml b/stable/librespeed/13.7.2/ix_values.yaml
new file mode 100644
index 0000000..6430bbb
--- /dev/null
+++ b/stable/librespeed/13.7.2/ix_values.yaml
@@ -0,0 +1,23 @@
+image:
+ repository: ghcr.io/linuxserver/librespeed
+ tag: 5.3.0@sha256:e8430ca472f2091a9c79a47f3dd3661b8140776ee6001e4a30e7d3c843a14798
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10016
+ targetPort: 80
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
diff --git a/stable/librespeed/13.7.2/questions.yaml b/stable/librespeed/13.7.2/questions.yaml
new file mode 100644
index 0000000..9eed1fe
--- /dev/null
+++ b/stable/librespeed/13.7.2/questions.yaml
@@ -0,0 +1,2839 @@
+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: 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: 10016
+ 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: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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: '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: 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: 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/librespeed/13.7.2/templates/NOTES.txt b/stable/librespeed/13.7.2/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/librespeed/13.7.2/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/librespeed/13.7.2/templates/common.yaml b/stable/librespeed/13.7.2/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/librespeed/13.7.2/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/librespeed/13.7.2/values.yaml b/stable/librespeed/13.7.2/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/librespeed/13.7.3/.helmignore b/stable/librespeed/13.7.3/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/librespeed/13.7.3/.helmignore
@@ -0,0 +1,30 @@
+# 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/librespeed/13.7.3/CHANGELOG.md b/stable/librespeed/13.7.3/CHANGELOG.md
new file mode 100644
index 0000000..e727f4c
--- /dev/null
+++ b/stable/librespeed/13.7.3/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [librespeed-13.7.3](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.3) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.3](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.3) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.3](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.3) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.3](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.3) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.3](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.3) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.3](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.3) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
diff --git a/stable/librespeed/13.7.3/Chart.yaml b/stable/librespeed/13.7.3/Chart.yaml
new file mode 100644
index 0000000..008e0ff
--- /dev/null
+++ b/stable/librespeed/13.7.3/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 5.3.0
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Librespeed is a HTML5 webpage to test upload and download speeds
+home: https://truecharts.org/charts/stable/librespeed
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+keywords:
+ - librespeed
+ - speedtest
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: librespeed
+sources:
+ - https://github.com/librespeed/speedtest
+ - https://github.com/truecharts/charts/tree/master/charts/stable/librespeed
+ - https://ghcr.io/linuxserver/librespeed
+type: application
+version: 13.7.3
diff --git a/stable/librespeed/13.7.3/README.md b/stable/librespeed/13.7.3/README.md
new file mode 100644
index 0000000..e7948fa
--- /dev/null
+++ b/stable/librespeed/13.7.3/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/librespeed)
+
+**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/librespeed/13.7.3/app-changelog.md b/stable/librespeed/13.7.3/app-changelog.md
new file mode 100644
index 0000000..2af28ac
--- /dev/null
+++ b/stable/librespeed/13.7.3/app-changelog.md
@@ -0,0 +1,15 @@
+
+
+## [librespeed-13.7.3](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.3) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/librespeed/13.7.3/app-readme.md b/stable/librespeed/13.7.3/app-readme.md
new file mode 100644
index 0000000..7e86075
--- /dev/null
+++ b/stable/librespeed/13.7.3/app-readme.md
@@ -0,0 +1,8 @@
+Librespeed is a HTML5 webpage to test upload and download speeds
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/librespeed](https://truecharts.org/charts/stable/librespeed)
+
+---
+
+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/librespeed/13.7.3/charts/common-20.2.3.tgz b/stable/librespeed/13.7.3/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/librespeed/13.7.3/charts/common-20.2.3.tgz differ
diff --git a/stable/librespeed/13.7.3/ix_values.yaml b/stable/librespeed/13.7.3/ix_values.yaml
new file mode 100644
index 0000000..6430bbb
--- /dev/null
+++ b/stable/librespeed/13.7.3/ix_values.yaml
@@ -0,0 +1,23 @@
+image:
+ repository: ghcr.io/linuxserver/librespeed
+ tag: 5.3.0@sha256:e8430ca472f2091a9c79a47f3dd3661b8140776ee6001e4a30e7d3c843a14798
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10016
+ targetPort: 80
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
diff --git a/stable/librespeed/13.7.3/questions.yaml b/stable/librespeed/13.7.3/questions.yaml
new file mode 100644
index 0000000..9eed1fe
--- /dev/null
+++ b/stable/librespeed/13.7.3/questions.yaml
@@ -0,0 +1,2839 @@
+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: 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: 10016
+ 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: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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: '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: 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: 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/librespeed/13.7.3/templates/NOTES.txt b/stable/librespeed/13.7.3/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/librespeed/13.7.3/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/librespeed/13.7.3/templates/common.yaml b/stable/librespeed/13.7.3/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/librespeed/13.7.3/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/librespeed/13.7.3/values.yaml b/stable/librespeed/13.7.3/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/librespeed/13.7.4/.helmignore b/stable/librespeed/13.7.4/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/librespeed/13.7.4/.helmignore
@@ -0,0 +1,30 @@
+# 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/librespeed/13.7.4/CHANGELOG.md b/stable/librespeed/13.7.4/CHANGELOG.md
new file mode 100644
index 0000000..3f41133
--- /dev/null
+++ b/stable/librespeed/13.7.4/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-24)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-24)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-24)
+
+### Chore
+
diff --git a/stable/librespeed/13.7.4/Chart.yaml b/stable/librespeed/13.7.4/Chart.yaml
new file mode 100644
index 0000000..b0751f6
--- /dev/null
+++ b/stable/librespeed/13.7.4/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 5.3.0
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Librespeed is a HTML5 webpage to test upload and download speeds
+home: https://truecharts.org/charts/stable/librespeed
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+keywords:
+ - librespeed
+ - speedtest
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: librespeed
+sources:
+ - https://github.com/librespeed/speedtest
+ - https://github.com/truecharts/charts/tree/master/charts/stable/librespeed
+ - https://ghcr.io/linuxserver/librespeed
+type: application
+version: 13.7.4
diff --git a/stable/librespeed/13.7.4/README.md b/stable/librespeed/13.7.4/README.md
new file mode 100644
index 0000000..e7948fa
--- /dev/null
+++ b/stable/librespeed/13.7.4/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/librespeed)
+
+**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/librespeed/13.7.4/app-changelog.md b/stable/librespeed/13.7.4/app-changelog.md
new file mode 100644
index 0000000..48db3fe
--- /dev/null
+++ b/stable/librespeed/13.7.4/app-changelog.md
@@ -0,0 +1,17 @@
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/librespeed/13.7.4/app-readme.md b/stable/librespeed/13.7.4/app-readme.md
new file mode 100644
index 0000000..7e86075
--- /dev/null
+++ b/stable/librespeed/13.7.4/app-readme.md
@@ -0,0 +1,8 @@
+Librespeed is a HTML5 webpage to test upload and download speeds
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/librespeed](https://truecharts.org/charts/stable/librespeed)
+
+---
+
+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/librespeed/13.7.4/charts/common-20.2.3.tgz b/stable/librespeed/13.7.4/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/librespeed/13.7.4/charts/common-20.2.3.tgz differ
diff --git a/stable/librespeed/13.7.4/ix_values.yaml b/stable/librespeed/13.7.4/ix_values.yaml
new file mode 100644
index 0000000..36cf366
--- /dev/null
+++ b/stable/librespeed/13.7.4/ix_values.yaml
@@ -0,0 +1,23 @@
+image:
+ repository: ghcr.io/linuxserver/librespeed
+ tag: 5.3.0@sha256:f18f467599991f14c69a6e25d5287b7ec06e5bc3e23939d4b18e26a19c59f9ef
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10016
+ targetPort: 80
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
diff --git a/stable/librespeed/13.7.4/questions.yaml b/stable/librespeed/13.7.4/questions.yaml
new file mode 100644
index 0000000..9eed1fe
--- /dev/null
+++ b/stable/librespeed/13.7.4/questions.yaml
@@ -0,0 +1,2839 @@
+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: 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: 10016
+ 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: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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: '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: 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: 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/librespeed/13.7.4/templates/NOTES.txt b/stable/librespeed/13.7.4/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/librespeed/13.7.4/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/librespeed/13.7.4/templates/common.yaml b/stable/librespeed/13.7.4/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/librespeed/13.7.4/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/librespeed/13.7.4/values.yaml b/stable/librespeed/13.7.4/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/librespeed/13.7.5/.helmignore b/stable/librespeed/13.7.5/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/librespeed/13.7.5/.helmignore
@@ -0,0 +1,30 @@
+# 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/librespeed/13.7.5/CHANGELOG.md b/stable/librespeed/13.7.5/CHANGELOG.md
new file mode 100644
index 0000000..9d1a607
--- /dev/null
+++ b/stable/librespeed/13.7.5/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [librespeed-13.7.5](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.5) (2024-03-25)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.5](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.5) (2024-03-25)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-25)
+
+### Chore
+
+
+
+- update container image ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
+
+
+## [librespeed-13.7.4](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.4) (2024-03-24)
\ No newline at end of file
diff --git a/stable/librespeed/13.7.5/Chart.yaml b/stable/librespeed/13.7.5/Chart.yaml
new file mode 100644
index 0000000..5777c10
--- /dev/null
+++ b/stable/librespeed/13.7.5/Chart.yaml
@@ -0,0 +1,37 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 5.3.0
+dependencies:
+ - name: common
+ version: 20.2.4
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Librespeed is a HTML5 webpage to test upload and download speeds
+home: https://truecharts.org/charts/stable/librespeed
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+keywords:
+ - librespeed
+ - speedtest
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: librespeed
+sources:
+ - https://github.com/librespeed/speedtest
+ - https://github.com/truecharts/charts/tree/master/charts/stable/librespeed
+ - https://ghcr.io/linuxserver/librespeed
+type: application
+version: 13.7.5
diff --git a/stable/librespeed/13.7.5/README.md b/stable/librespeed/13.7.5/README.md
new file mode 100644
index 0000000..e7948fa
--- /dev/null
+++ b/stable/librespeed/13.7.5/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/librespeed)
+
+**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/librespeed/13.7.5/app-changelog.md b/stable/librespeed/13.7.5/app-changelog.md
new file mode 100644
index 0000000..9c4c85d
--- /dev/null
+++ b/stable/librespeed/13.7.5/app-changelog.md
@@ -0,0 +1,19 @@
+
+
+## [librespeed-13.7.5](https://github.com/truecharts/charts/compare/librespeed-13.6.0...librespeed-13.7.5) (2024-03-25)
+
+### Chore
+
+
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@f18f467](https://github.com/f18f467) by renovate ([#19728](https://github.com/truecharts/charts/issues/19728))
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/linuxserver/librespeed to 5.3.0[@e8430ca](https://github.com/e8430ca) by renovate ([#19412](https://github.com/truecharts/charts/issues/19412))
+
+- update container image common to v20.2.0[@91ade87](https://github.com/91ade87) by renovate ([#19361](https://github.com/truecharts/charts/issues/19361))
\ No newline at end of file
diff --git a/stable/librespeed/13.7.5/app-readme.md b/stable/librespeed/13.7.5/app-readme.md
new file mode 100644
index 0000000..7e86075
--- /dev/null
+++ b/stable/librespeed/13.7.5/app-readme.md
@@ -0,0 +1,8 @@
+Librespeed is a HTML5 webpage to test upload and download speeds
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/librespeed](https://truecharts.org/charts/stable/librespeed)
+
+---
+
+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/librespeed/13.7.5/charts/common-20.2.4.tgz b/stable/librespeed/13.7.5/charts/common-20.2.4.tgz
new file mode 100644
index 0000000..e02a4ec
Binary files /dev/null and b/stable/librespeed/13.7.5/charts/common-20.2.4.tgz differ
diff --git a/stable/librespeed/13.7.5/ix_values.yaml b/stable/librespeed/13.7.5/ix_values.yaml
new file mode 100644
index 0000000..36cf366
--- /dev/null
+++ b/stable/librespeed/13.7.5/ix_values.yaml
@@ -0,0 +1,23 @@
+image:
+ repository: ghcr.io/linuxserver/librespeed
+ tag: 5.3.0@sha256:f18f467599991f14c69a6e25d5287b7ec06e5bc3e23939d4b18e26a19c59f9ef
+ pullPolicy: IfNotPresent
+service:
+ main:
+ ports:
+ main:
+ port: 10016
+ targetPort: 80
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+portal:
+ open:
+ enabled: true
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
diff --git a/stable/librespeed/13.7.5/questions.yaml b/stable/librespeed/13.7.5/questions.yaml
new file mode 100644
index 0000000..9eed1fe
--- /dev/null
+++ b/stable/librespeed/13.7.5/questions.yaml
@@ -0,0 +1,2839 @@
+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: 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: 10016
+ 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: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID 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: '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: 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: 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/librespeed/13.7.5/templates/NOTES.txt b/stable/librespeed/13.7.5/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/librespeed/13.7.5/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/librespeed/13.7.5/templates/common.yaml b/stable/librespeed/13.7.5/templates/common.yaml
new file mode 100644
index 0000000..b51394e
--- /dev/null
+++ b/stable/librespeed/13.7.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.v1.common.loader.all" . }}
diff --git a/stable/librespeed/13.7.5/values.yaml b/stable/librespeed/13.7.5/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/librespeed/app_versions.json b/stable/librespeed/app_versions.json
new file mode 100644
index 0000000..6445cbc
--- /dev/null
+++ b/stable/librespeed/app_versions.json
@@ -0,0 +1,34753 @@
+{
+ "13.7.5": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/librespeed/13.7.5",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "5.3.0_13.7.5",
+ "version": "13.7.5",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "5.3.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.4",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Librespeed is a HTML5 webpage to test upload and download speeds",
+ "home": "https://truecharts.org/charts/stable/librespeed",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png",
+ "keywords": [
+ "librespeed",
+ "speedtest"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "librespeed",
+ "sources": [
+ "https://github.com/librespeed/speedtest",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/librespeed",
+ "https://ghcr.io/linuxserver/librespeed"
+ ],
+ "type": "application",
+ "version": "13.7.5"
+ },
+ "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": "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": 10016,
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "Librespeed is a HTML5 webpage to test upload and download speeds
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/librespeed
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n"
+ },
+ "13.7.4": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/librespeed/13.7.4",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "5.3.0_13.7.4",
+ "version": "13.7.4",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "5.3.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Librespeed is a HTML5 webpage to test upload and download speeds",
+ "home": "https://truecharts.org/charts/stable/librespeed",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png",
+ "keywords": [
+ "librespeed",
+ "speedtest"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "librespeed",
+ "sources": [
+ "https://github.com/librespeed/speedtest",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/librespeed",
+ "https://ghcr.io/linuxserver/librespeed"
+ ],
+ "type": "application",
+ "version": "13.7.4"
+ },
+ "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": "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": 10016,
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "Librespeed is a HTML5 webpage to test upload and download speeds
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/librespeed
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@f18f467 by renovate (#19728)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
"
+ },
+ "13.7.3": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/librespeed/13.7.3",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "5.3.0_13.7.3",
+ "version": "13.7.3",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "5.3.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Librespeed is a HTML5 webpage to test upload and download speeds",
+ "home": "https://truecharts.org/charts/stable/librespeed",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png",
+ "keywords": [
+ "librespeed",
+ "speedtest"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "librespeed",
+ "sources": [
+ "https://github.com/librespeed/speedtest",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/librespeed",
+ "https://ghcr.io/linuxserver/librespeed"
+ ],
+ "type": "application",
+ "version": "13.7.3"
+ },
+ "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": "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": 10016,
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "Librespeed is a HTML5 webpage to test upload and download speeds
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/librespeed
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
"
+ },
+ "13.7.2": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/librespeed/13.7.2",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "5.3.0_13.7.2",
+ "version": "13.7.2",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "5.3.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Librespeed is a HTML5 webpage to test upload and download speeds",
+ "home": "https://truecharts.org/charts/stable/librespeed",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png",
+ "keywords": [
+ "librespeed",
+ "speedtest"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "librespeed",
+ "sources": [
+ "https://github.com/librespeed/speedtest",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/librespeed",
+ "https://ghcr.io/linuxserver/librespeed"
+ ],
+ "type": "application",
+ "version": "13.7.2"
+ },
+ "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": "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": 10016,
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "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": "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": "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": "Librespeed is a HTML5 webpage to test upload and download speeds
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/librespeed
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/linuxserver/librespeed to 5.3.0@e8430ca by renovate (#19412)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n
"
+ },
+ "12.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/librespeed/12.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "5.3.0_12.3.0",
+ "version": "12.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.3.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.5.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Librespeed is a HTML5 webpage to test upload and download speeds",
+ "home": "https://truecharts.org/charts/stable/librespeed",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png",
+ "keywords": [
+ "librespeed",
+ "speedtest"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "librespeed",
+ "sources": [
+ "https://github.com/librespeed/speedtest",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/librespeed",
+ "https://ghcr.io/linuxserver/librespeed"
+ ],
+ "type": "application",
+ "version": "12.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": "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": 10016,
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "Librespeed is a HTML5 webpage to test upload and download speeds
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/librespeed
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/linuxserver/librespeed to 5.3.0@d9c4605 by renovate (#18066)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/librespeed to 5.3.0@8e56f58 by renovate (#17856)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/librespeed to 5.3.0@e7e8a14 by renovate (#17611)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
"
+ },
+ "12.2.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/librespeed/12.2.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "5.3.0_12.2.1",
+ "version": "12.2.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.3.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Librespeed is a HTML5 webpage to test upload and download speeds",
+ "home": "https://truecharts.org/charts/stable/librespeed",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png",
+ "keywords": [
+ "librespeed",
+ "speedtest"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "librespeed",
+ "sources": [
+ "https://github.com/librespeed/speedtest",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/librespeed",
+ "https://ghcr.io/linuxserver/librespeed"
+ ],
+ "type": "application",
+ "version": "12.2.1"
+ },
+ "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": "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": 10016,
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "Librespeed is a HTML5 webpage to test upload and download speeds
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/librespeed
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/linuxserver/librespeed to 5.3.0@d9c4605 by renovate (#18066)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/librespeed to 5.3.0@8e56f58 by renovate (#17856)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/linuxserver/librespeed to 5.3.0@e7e8a14 by renovate (#17611)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
\n\nChore
"
+ },
+ "12.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/librespeed/12.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "5.3.0_12.2.0",
+ "version": "12.2.0",
+ "chart_metadata": {
+ "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.3.0",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Librespeed is a HTML5 webpage to test upload and download speeds",
+ "home": "https://truecharts.org/charts/stable/librespeed",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png",
+ "keywords": [
+ "librespeed",
+ "speedtest"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "librespeed",
+ "sources": [
+ "https://github.com/librespeed/speedtest",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/librespeed",
+ "https://ghcr.io/linuxserver/librespeed"
+ ],
+ "type": "application",
+ "version": "12.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": "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": 10016,
+ "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": 0
+ }
+ },
+ {
+ "variable": "runAsGroup",
+ "label": "runAsGroup",
+ "description": "The groupID of the user running the application",
+ "schema": {
+ "type": "int",
+ "default": 0
+ }
+ },
+ {
+ "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": "Librespeed is a HTML5 webpage to test upload and download speeds
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/librespeed
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Major Change to GUI
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4349)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4349)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4342)
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4329)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4317)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4308)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4261)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4182)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4122)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#4071)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- split addons in smaller templates (#3979)
\n- update helm general non-major
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3918)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3898)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- refactor Services SCALE GUI
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- update helm general non-major (#3767)
\n- split serviceSelector (#3751)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- update helm general non-major (#3711)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major (#3639)
\n- update helm chart common to v10.5.5 (#3626)
\n
\n\nChore
\n\n- update helm chart common to v10.5.5 (#3626)
\n
\n\nChore
\n\n- update helm general non-major (#3619)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3545)
\n
\n\nChore
\n\n- add documentation checkbox/section to all SCALE Apps
\n- update helm general non-major helm releases (#3456)
\n
\nFix
\n\n- move extraArgs from .Values.controller to .Values (#3447)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3376)
\n- replace questions parts with templates (#3402)
\n
\n\nChore
\n\n- update home links (#3291)
\n- update helm general non-major helm releases (#3302)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3280)
\n
\n\nChore
\n\n- Bump all charts to generate config and container references due to huge increase of repository
\n- update helm general non-major helm releases (#3268)
\n
\n\nChore
\n\n- Update Readme and Description on SCALE
\n
\n\nFix
\n\n- regenerate catalog and update template
\n
\n\nFix
\n\n- bump to ensure .helmignore is present on all Charts
\n
\n\nChore
\n\n- update icons (#3156)
\n- bump to cleanup old docs and use correct icon urls
\n
\n\nChore
\n\n- bump to regenerate documentation
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3147)
\n
\n
\n\nChore
\n\n- move icons into the apps folder (#3139)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3113)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#3066)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2977)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2948)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2943)
\n
\n
\n\nChore
\n\n- Sync questions and values env's (#2916)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2886)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2854)
\n
\n
\n\nFix
\n\n- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format.
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- sync all apps persistence configuration and always default to PVC
\n
\nFix
\n\n- remove malfunctioning SCALE migration script
\n
\nRefactor
\n\n- BREAKING CHANGE (#2836)
\n
\n
\n\nChore
\n\n- sync all apps persistence configuration and always default to PVC
\n
\nRefactor
\n\n- BREAKING CHANGE (#2836)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2803)
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases (#2759)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2759)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- Auto-update chart README [skip ci]
\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2649)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2612)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2573)
\n
\n
\n\nChore
\n\n- add missing quote on description (#2515)
\n- update helm general non-major helm releases (#2524)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2480)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2410)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2361)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2354)
\n
\n
\n\nChore
\n\n- bump all apps to trigger ci
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#2111)
\n- Remove
-icon string from icon png's (#2040) \n
\n
\n\nChore
\n\n- remove fixed env from questions.yaml
\n- remove PUID from per-app env-vars if set to 568
\n- remove empty env var declaration from questions.yaml
\n- remove TZ from values. (#1945)
\n- update helm general major helm releases (#2021)
\n
\nFix
\n\n- BREAKING CHANGE Move some env-vars outside of env section (#2010)
\n
\n
\n\nChore
\n\n- rename
web_portal to open (#1957) \n- update helm general non-major helm releases (#1999)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1927)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1901)
\n
\n
\n\nChore
\n\n- fix links on
Chart.yaml (#1862) \n- update helm general non-major helm releases (#1871)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.15.0 (#1859)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1852)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1828)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1791)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1766)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1759)
\n
\nFix
\n\n- set additional_attrs: true on all dicts (#1750)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1732)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1712)
\n
\nFeat
\n\n- expose capabilities in GUI (#1709)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1704)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1693)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1623)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1596)
\n
\n
\n\nChore
\n\n- Last patch bump before RC2 branch-off
\n- remove
editable: true as this is the default (#1576) \n
\n
\n\nChore
\n\n- completely remove mountPath reference from GUI (#1572)
\n- update helm general non-major helm releases (#1571)
\n
\n
\n\nChore
\n\n- cleanup questions by removing hidden dicts (#1558)
\n- App-Icon Organization (#1539)
\n
\n
\n\nChore
\n\n- update helm general non-major helm releases (#1535)
\n
\n
\n\nChore
\n\n- move incubator apps to stable and bump everything
\n
\n
\n\nChore
\n\n- set PUID to
int instead of string (#1506) \n- update general helm non-major helm releases (#1509)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1481)
\n
\n
\nlibrespeed-4.0.22 (2021-12-05)
\nChore
\n\n- bump apps to generate security page
\n- move all container references to TCCR (#1448)
\n- update non-major deps helm releases (#1471)
\n- update non-major deps helm releases (#1468)
\n- update non-major deps helm releases (#1453)
\n- update non-major (#1449)
\n- update non-major deps helm releases (#1432)
\n- update non-major (#1427)
\n
\nFix
\n\n- fix typo in theme selection (#1428)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1468)
\n
\n
\n\nChore
\n\n- bump apps to generate security page
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1453)
\n
\n
\n\nChore
\n\n- move all container references to TCCR (#1448)
\n- update non-major (#1449)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1432)
\n
\n
\n\nChore
\n\n- update non-major (#1427)
\n
\nFix
\n\n- move conflicting ports to 10xxx range (#1415)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1386)
\n
\n
\n\nChore
\n\n- update non-major (#1384)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1383)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1345)
\n
\n
\n\nChore
\n\n- update non-major (#1342)
\n
\n
\n\nChore
\n\n- persistence cleanup and small bugfixes (#1329)
\n- update non-major deps helm releases (#1338)
\n
\n
\n\nChore
\n\n- fixes around the GUI refactor (#1316)
\n- move port above advanced in GUI (#1326)
\n- clean up Chart.yaml (#1322)
\n- update non-major deps helm releases (#1328)
\n
\nFix
\n\n- split udp and tcp ports (#1321)
\n- Allow spaces in paths (#1306)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1297)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1295)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1291)
\n
\nChore
\n\n- Simplify GUI for deployment, persistence and securityContext (#1289)
\n
\nFeat
\n\n- Simplify the Services GUI (#1290)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1267)
\n
\n
\n\nChore
\n\n- update non-major docker tags (#1266)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1264)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1245)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.3.15 (#1240)
\n- update non-major (#1232)
\n
\n
\n\nChore
\n\n- Adapt for TrueNAS SCALE RC1
\n
\n
\n\nChore
\n\n- bump apps, remove duplicates and move incubator to stable for RC1
\n- update non-major deps helm releases (#1213)
\n
\nFix
\n\n- reenable postgresql migration scripting and bump all to force update
\n
\n
\n\nChore
\n\n- bump versions to rerelease and fix icons
\n
\n
\n\nChange
\n\n- Project-Eclipse 3, Automatically generate item.yaml (#1178)
\n
\nChore
\n\n- Project-Eclipse 5, move app-readme to automatic generation script (#1181)
\n- update helm chart common to v8.3.13 (#1184)
\n- update non-major (#1174)
\n
\nFeat
\n\n- Project-Eclipse 4, Add App grading annotations to Chart.yaml (#1180)
\n
\nRefactor
\n\n- Project Eclipse Part 6, move questions.yaml to root App folder (#1182)
\n
\n
\n\nChore
\n\n- Project-Eclipse part 2, adapting and cleaning changelog (#1173)
\n- update helm chart postgresql to v3.0.20 (#1177)
\n
\n
\n\nFix
\n\n- fix previous SCALE bugfix not correctly being applied
\n
\n
\n\nFix
\n\n- Solve issues regarding ix_values.yaml not containing the image and tag definitions. (#1176)
\n
\n
\n\nChore
\n\n- Add description on persistence (#1172)
\n
\nRefactor
\n\n- Project Eclipse - part 1 - remove ix_values.yaml (#1168)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.3.10 (#1160)
\n
\nFix
\n\n- force users using correct / prefix for mounPath (#1156)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1133)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1126)
\n
\n
\n\nChore
\n\n- update non-major (#1122)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1123)
\n
\n
\n\nChore
\n\n- update non-major deps helm releases (#1099)
\n
\n
\n\nChore
\n\n- update non-major (#1098)
\n
\n
\n\nChore
\n\n- update helm chart common to v8.0.13 (#1060)
\n
\n
\n\nChore
\n\n- update non-major (#1048)
\n
\n
\n\n
\n\n
\n\nChore
\n\n- update non-major deps helm releases (#1014)
\n
\n
\n\nChore
\n\n- update non-major (#1015)
\n
\n
\n\nChore
\n\n- move all LSIO containers to github registry (#957)
\n- update non-major (#962)
\n
\nFeat
\n\n- add new GUI and VPN support to all Apps (#977)
\n- Add VPN addon and move some config to includes (#973)
\n- pin all container references to digests (#963)
\n- Move some common containers to our own containers
\n
\n
\n\nFix
\n\n- repair Hyperion and some misplaced GUI elements (#922)
\n
"
+ }
+}
\ No newline at end of file
diff --git a/stable/librespeed/item.yaml b/stable/librespeed/item.yaml
new file mode 100644
index 0000000..b61cde8
--- /dev/null
+++ b/stable/librespeed/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/librespeed.png
+categories:
+ - media
+screenshots: []
diff --git a/stable/lidarr/19.2.0/.helmignore b/stable/lidarr/19.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/19.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/19.2.0/CHANGELOG.md b/stable/lidarr/19.2.0/CHANGELOG.md
new file mode 100644
index 0000000..90e0409
--- /dev/null
+++ b/stable/lidarr/19.2.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+## [lidarr-19.1.19](https://github.com/truecharts/charts/compare/lidarr-19.1.18...lidarr-19.1.19) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030[@01d40bb](https://github.com/01d40bb) by renovate ([#18169](https://github.com/truecharts/charts/issues/18169))
+
+
+## [lidarr-19.1.18](https://github.com/truecharts/charts/compare/lidarr-19.1.17...lidarr-19.1.18) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993[@36b75d7](https://github.com/36b75d7) by renovate ([#17955](https://github.com/truecharts/charts/issues/17955))
+
+
+## [lidarr-19.1.17](https://github.com/truecharts/charts/compare/lidarr-19.1.16...lidarr-19.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993[@90ddf2d](https://github.com/90ddf2d) by renovate ([#17914](https://github.com/truecharts/charts/issues/17914))
+
+
+## [lidarr-19.1.16](https://github.com/truecharts/charts/compare/lidarr-19.1.15...lidarr-19.1.16) (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))
+
+
+## [lidarr-19.1.15](https://github.com/truecharts/charts/compare/lidarr-19.1.14...lidarr-19.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/exportarr to v1.6.1[@60cf3d4](https://github.com/60cf3d4) by renovate ([#17725](https://github.com/truecharts/charts/issues/17725))
+
+
+## [lidarr-19.1.14](https://github.com/truecharts/charts/compare/lidarr-19.1.13...lidarr-19.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941[@de7dac0](https://github.com/de7dac0) by renovate ([#17674](https://github.com/truecharts/charts/issues/17674))
+
+
+## [lidarr-19.1.13](https://github.com/truecharts/charts/compare/lidarr-19.1.12...lidarr-19.1.13) (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))
+
+
+## [lidarr-19.1.12](https://github.com/truecharts/charts/compare/lidarr-19.1.11...lidarr-19.1.12) (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))
+
+
+## [lidarr-19.1.11](https://github.com/truecharts/charts/compare/lidarr-19.1.10...lidarr-19.1.11) (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))
+
+
+## [lidarr-19.1.10](https://github.com/truecharts/charts/compare/lidarr-19.1.9...lidarr-19.1.10) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
diff --git a/stable/lidarr/19.2.0/Chart.yaml b/stable/lidarr/19.2.0/Chart.yaml
new file mode 100644
index 0000000..e4f4882
--- /dev/null
+++ b/stable/lidarr/19.2.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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: 2.1.7.4030
+dependencies:
+ - name: common
+ version: 17.4.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/exportarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+type: application
+version: 19.2.0
diff --git a/stable/lidarr/19.2.0/README.md b/stable/lidarr/19.2.0/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/19.2.0/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/lidarr)
+
+**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/lidarr/19.2.0/app-readme.md b/stable/lidarr/19.2.0/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/19.2.0/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/19.2.0/charts/common-17.4.2.tgz b/stable/lidarr/19.2.0/charts/common-17.4.2.tgz
new file mode 100644
index 0000000..31f3a10
Binary files /dev/null and b/stable/lidarr/19.2.0/charts/common-17.4.2.tgz differ
diff --git a/stable/lidarr/19.2.0/ix_values.yaml b/stable/lidarr/19.2.0/ix_values.yaml
new file mode 100644
index 0000000..cb96d58
--- /dev/null
+++ b/stable/lidarr/19.2.0/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.1.7.4030@sha256:01d40bb9a759a3be757a9af235a14dafcef131b5014a6a2f4a32075b5fa940c5
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v1.6.1@sha256:60cf3d44aa0b7dea2a65160b2e2e373c1ae38cd6b12a45fe81b8afa45ac31c22
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/19.2.0/questions.yaml b/stable/lidarr/19.2.0/questions.yaml
new file mode 100644
index 0000000..ef19303
--- /dev/null
+++ b/stable/lidarr/19.2.0/questions.yaml
@@ -0,0 +1,2927 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/19.2.0/templates/NOTES.txt b/stable/lidarr/19.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/19.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/19.2.0/templates/common.yaml b/stable/lidarr/19.2.0/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/19.2.0/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/19.2.0/values.yaml b/stable/lidarr/19.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/19.3.0/.helmignore b/stable/lidarr/19.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/19.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/19.3.0/CHANGELOG.md b/stable/lidarr/19.3.0/CHANGELOG.md
new file mode 100644
index 0000000..3060a38
--- /dev/null
+++ b/stable/lidarr/19.3.0/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+## [lidarr-19.1.19](https://github.com/truecharts/charts/compare/lidarr-19.1.18...lidarr-19.1.19) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030[@01d40bb](https://github.com/01d40bb) by renovate ([#18169](https://github.com/truecharts/charts/issues/18169))
+
+
+## [lidarr-19.1.18](https://github.com/truecharts/charts/compare/lidarr-19.1.17...lidarr-19.1.18) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993[@36b75d7](https://github.com/36b75d7) by renovate ([#17955](https://github.com/truecharts/charts/issues/17955))
+
+
+## [lidarr-19.1.17](https://github.com/truecharts/charts/compare/lidarr-19.1.16...lidarr-19.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993[@90ddf2d](https://github.com/90ddf2d) by renovate ([#17914](https://github.com/truecharts/charts/issues/17914))
+
+
+## [lidarr-19.1.16](https://github.com/truecharts/charts/compare/lidarr-19.1.15...lidarr-19.1.16) (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))
+
+
+## [lidarr-19.1.15](https://github.com/truecharts/charts/compare/lidarr-19.1.14...lidarr-19.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/exportarr to v1.6.1[@60cf3d4](https://github.com/60cf3d4) by renovate ([#17725](https://github.com/truecharts/charts/issues/17725))
+
+
+## [lidarr-19.1.14](https://github.com/truecharts/charts/compare/lidarr-19.1.13...lidarr-19.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941[@de7dac0](https://github.com/de7dac0) by renovate ([#17674](https://github.com/truecharts/charts/issues/17674))
+
+
+## [lidarr-19.1.13](https://github.com/truecharts/charts/compare/lidarr-19.1.12...lidarr-19.1.13) (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))
+
+
+## [lidarr-19.1.12](https://github.com/truecharts/charts/compare/lidarr-19.1.11...lidarr-19.1.12) (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))
+
+
+## [lidarr-19.1.11](https://github.com/truecharts/charts/compare/lidarr-19.1.10...lidarr-19.1.11) (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))
+
+
+## [lidarr-19.1.10](https://github.com/truecharts/charts/compare/lidarr-19.1.9...lidarr-19.1.10) (2024-01-21)
+
+### Chore
+
+
+
+- update metadata in chart.yaml ([#17457](https://github.com/truecharts/charts/issues/17457))
\ No newline at end of file
diff --git a/stable/lidarr/19.3.0/Chart.yaml b/stable/lidarr/19.3.0/Chart.yaml
new file mode 100644
index 0000000..0aa82c3
--- /dev/null
+++ b/stable/lidarr/19.3.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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: 2.1.7.4030
+dependencies:
+ - name: common
+ version: 17.5.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 19.3.0
diff --git a/stable/lidarr/19.3.0/README.md b/stable/lidarr/19.3.0/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/19.3.0/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/lidarr)
+
+**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/lidarr/19.3.0/app-readme.md b/stable/lidarr/19.3.0/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/19.3.0/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/19.3.0/charts/common-17.5.0.tgz b/stable/lidarr/19.3.0/charts/common-17.5.0.tgz
new file mode 100644
index 0000000..3a55348
Binary files /dev/null and b/stable/lidarr/19.3.0/charts/common-17.5.0.tgz differ
diff --git a/stable/lidarr/19.3.0/ix_values.yaml b/stable/lidarr/19.3.0/ix_values.yaml
new file mode 100644
index 0000000..cb96d58
--- /dev/null
+++ b/stable/lidarr/19.3.0/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.1.7.4030@sha256:01d40bb9a759a3be757a9af235a14dafcef131b5014a6a2f4a32075b5fa940c5
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v1.6.1@sha256:60cf3d44aa0b7dea2a65160b2e2e373c1ae38cd6b12a45fe81b8afa45ac31c22
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/19.3.0/questions.yaml b/stable/lidarr/19.3.0/questions.yaml
new file mode 100644
index 0000000..ef19303
--- /dev/null
+++ b/stable/lidarr/19.3.0/questions.yaml
@@ -0,0 +1,2927 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/19.3.0/templates/NOTES.txt b/stable/lidarr/19.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/19.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/19.3.0/templates/common.yaml b/stable/lidarr/19.3.0/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/19.3.0/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/19.3.0/values.yaml b/stable/lidarr/19.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/20.2.0/.helmignore b/stable/lidarr/20.2.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/20.2.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/20.2.0/CHANGELOG.md b/stable/lidarr/20.2.0/CHANGELOG.md
new file mode 100644
index 0000000..ac28903
--- /dev/null
+++ b/stable/lidarr/20.2.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+## [lidarr-19.1.19](https://github.com/truecharts/charts/compare/lidarr-19.1.18...lidarr-19.1.19) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030[@01d40bb](https://github.com/01d40bb) by renovate ([#18169](https://github.com/truecharts/charts/issues/18169))
+
+
+## [lidarr-19.1.18](https://github.com/truecharts/charts/compare/lidarr-19.1.17...lidarr-19.1.18) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993[@36b75d7](https://github.com/36b75d7) by renovate ([#17955](https://github.com/truecharts/charts/issues/17955))
+
+
+## [lidarr-19.1.17](https://github.com/truecharts/charts/compare/lidarr-19.1.16...lidarr-19.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993[@90ddf2d](https://github.com/90ddf2d) by renovate ([#17914](https://github.com/truecharts/charts/issues/17914))
+
+
+## [lidarr-19.1.16](https://github.com/truecharts/charts/compare/lidarr-19.1.15...lidarr-19.1.16) (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))
+
+
+## [lidarr-19.1.15](https://github.com/truecharts/charts/compare/lidarr-19.1.14...lidarr-19.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/exportarr to v1.6.1[@60cf3d4](https://github.com/60cf3d4) by renovate ([#17725](https://github.com/truecharts/charts/issues/17725))
+
+
+## [lidarr-19.1.14](https://github.com/truecharts/charts/compare/lidarr-19.1.13...lidarr-19.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941[@de7dac0](https://github.com/de7dac0) by renovate ([#17674](https://github.com/truecharts/charts/issues/17674))
+
+
+## [lidarr-19.1.13](https://github.com/truecharts/charts/compare/lidarr-19.1.12...lidarr-19.1.13) (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))
+
+
+## [lidarr-19.1.12](https://github.com/truecharts/charts/compare/lidarr-19.1.11...lidarr-19.1.12) (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))
+
+
+## [lidarr-19.1.11](https://github.com/truecharts/charts/compare/lidarr-19.1.10...lidarr-19.1.11) (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))
+
+
+## [lidarr-19.1.10](https://github.com/truecharts/charts/compare/lidarr-19.1.9...lidarr-19.1.10) (2024-01-21)
diff --git a/stable/lidarr/20.2.0/Chart.yaml b/stable/lidarr/20.2.0/Chart.yaml
new file mode 100644
index 0000000..e400953
--- /dev/null
+++ b/stable/lidarr/20.2.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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: 2.2.0.4045
+dependencies:
+ - name: common
+ version: 18.0.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: '>=1.24.0-0'
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 20.2.0
diff --git a/stable/lidarr/20.2.0/README.md b/stable/lidarr/20.2.0/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/20.2.0/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/lidarr)
+
+**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/lidarr/20.2.0/app-readme.md b/stable/lidarr/20.2.0/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/20.2.0/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/20.2.0/charts/common-18.0.2.tgz b/stable/lidarr/20.2.0/charts/common-18.0.2.tgz
new file mode 100644
index 0000000..1588b1d
Binary files /dev/null and b/stable/lidarr/20.2.0/charts/common-18.0.2.tgz differ
diff --git a/stable/lidarr/20.2.0/ix_values.yaml b/stable/lidarr/20.2.0/ix_values.yaml
new file mode 100644
index 0000000..10a558c
--- /dev/null
+++ b/stable/lidarr/20.2.0/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.0.4045@sha256:c325ecc0a9a5ee604d06d21c6dab5bf4506c29622f108205b2f3eb42e0792a2e
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v1.6.1@sha256:60cf3d44aa0b7dea2a65160b2e2e373c1ae38cd6b12a45fe81b8afa45ac31c22
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/20.2.0/questions.yaml b/stable/lidarr/20.2.0/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/20.2.0/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/20.2.0/templates/NOTES.txt b/stable/lidarr/20.2.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/20.2.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/20.2.0/templates/common.yaml b/stable/lidarr/20.2.0/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/20.2.0/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/20.2.0/values.yaml b/stable/lidarr/20.2.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/20.2.1/.helmignore b/stable/lidarr/20.2.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/20.2.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/20.2.1/CHANGELOG.md b/stable/lidarr/20.2.1/CHANGELOG.md
new file mode 100644
index 0000000..143915e
--- /dev/null
+++ b/stable/lidarr/20.2.1/CHANGELOG.md
@@ -0,0 +1,100 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+
+## [lidarr-19.1.19](https://github.com/truecharts/charts/compare/lidarr-19.1.18...lidarr-19.1.19) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030[@01d40bb](https://github.com/01d40bb) by renovate ([#18169](https://github.com/truecharts/charts/issues/18169))
+
+
+## [lidarr-19.1.18](https://github.com/truecharts/charts/compare/lidarr-19.1.17...lidarr-19.1.18) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993[@36b75d7](https://github.com/36b75d7) by renovate ([#17955](https://github.com/truecharts/charts/issues/17955))
+
+
+## [lidarr-19.1.17](https://github.com/truecharts/charts/compare/lidarr-19.1.16...lidarr-19.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993[@90ddf2d](https://github.com/90ddf2d) by renovate ([#17914](https://github.com/truecharts/charts/issues/17914))
+
+
+## [lidarr-19.1.16](https://github.com/truecharts/charts/compare/lidarr-19.1.15...lidarr-19.1.16) (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))
+
+
+## [lidarr-19.1.15](https://github.com/truecharts/charts/compare/lidarr-19.1.14...lidarr-19.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/exportarr to v1.6.1[@60cf3d4](https://github.com/60cf3d4) by renovate ([#17725](https://github.com/truecharts/charts/issues/17725))
+
+
+## [lidarr-19.1.14](https://github.com/truecharts/charts/compare/lidarr-19.1.13...lidarr-19.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941[@de7dac0](https://github.com/de7dac0) by renovate ([#17674](https://github.com/truecharts/charts/issues/17674))
+
+
+## [lidarr-19.1.13](https://github.com/truecharts/charts/compare/lidarr-19.1.12...lidarr-19.1.13) (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))
+
+
+## [lidarr-19.1.12](https://github.com/truecharts/charts/compare/lidarr-19.1.11...lidarr-19.1.12) (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))
+
+
+## [lidarr-19.1.11](https://github.com/truecharts/charts/compare/lidarr-19.1.10...lidarr-19.1.11) (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))
+
+
+## [lidarr-19.1.10](https://github.com/truecharts/charts/compare/lidarr-19.1.9...lidarr-19.1.10) (2024-01-21)
\ No newline at end of file
diff --git a/stable/lidarr/20.2.1/Chart.yaml b/stable/lidarr/20.2.1/Chart.yaml
new file mode 100644
index 0000000..8b00681
--- /dev/null
+++ b/stable/lidarr/20.2.1/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 2.2.0.4045
+dependencies:
+ - name: common
+ version: 18.0.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 20.2.1
diff --git a/stable/lidarr/20.2.1/README.md b/stable/lidarr/20.2.1/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/20.2.1/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/lidarr)
+
+**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/lidarr/20.2.1/app-readme.md b/stable/lidarr/20.2.1/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/20.2.1/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/20.2.1/charts/common-18.0.3.tgz b/stable/lidarr/20.2.1/charts/common-18.0.3.tgz
new file mode 100644
index 0000000..94e930e
Binary files /dev/null and b/stable/lidarr/20.2.1/charts/common-18.0.3.tgz differ
diff --git a/stable/lidarr/20.2.1/ix_values.yaml b/stable/lidarr/20.2.1/ix_values.yaml
new file mode 100644
index 0000000..10a558c
--- /dev/null
+++ b/stable/lidarr/20.2.1/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.0.4045@sha256:c325ecc0a9a5ee604d06d21c6dab5bf4506c29622f108205b2f3eb42e0792a2e
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v1.6.1@sha256:60cf3d44aa0b7dea2a65160b2e2e373c1ae38cd6b12a45fe81b8afa45ac31c22
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/20.2.1/questions.yaml b/stable/lidarr/20.2.1/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/20.2.1/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/20.2.1/templates/NOTES.txt b/stable/lidarr/20.2.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/20.2.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/20.2.1/templates/common.yaml b/stable/lidarr/20.2.1/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/20.2.1/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/20.2.1/values.yaml b/stable/lidarr/20.2.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/20.3.0/.helmignore b/stable/lidarr/20.3.0/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/20.3.0/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/20.3.0/CHANGELOG.md b/stable/lidarr/20.3.0/CHANGELOG.md
new file mode 100644
index 0000000..35ff69a
--- /dev/null
+++ b/stable/lidarr/20.3.0/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+
+
+## [lidarr-19.1.19](https://github.com/truecharts/charts/compare/lidarr-19.1.18...lidarr-19.1.19) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030[@01d40bb](https://github.com/01d40bb) by renovate ([#18169](https://github.com/truecharts/charts/issues/18169))
+
+
+## [lidarr-19.1.18](https://github.com/truecharts/charts/compare/lidarr-19.1.17...lidarr-19.1.18) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993[@36b75d7](https://github.com/36b75d7) by renovate ([#17955](https://github.com/truecharts/charts/issues/17955))
+
+
+## [lidarr-19.1.17](https://github.com/truecharts/charts/compare/lidarr-19.1.16...lidarr-19.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993[@90ddf2d](https://github.com/90ddf2d) by renovate ([#17914](https://github.com/truecharts/charts/issues/17914))
+
+
+## [lidarr-19.1.16](https://github.com/truecharts/charts/compare/lidarr-19.1.15...lidarr-19.1.16) (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))
+
+
+## [lidarr-19.1.15](https://github.com/truecharts/charts/compare/lidarr-19.1.14...lidarr-19.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/exportarr to v1.6.1[@60cf3d4](https://github.com/60cf3d4) by renovate ([#17725](https://github.com/truecharts/charts/issues/17725))
+
+
+## [lidarr-19.1.14](https://github.com/truecharts/charts/compare/lidarr-19.1.13...lidarr-19.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941[@de7dac0](https://github.com/de7dac0) by renovate ([#17674](https://github.com/truecharts/charts/issues/17674))
+
+
+## [lidarr-19.1.13](https://github.com/truecharts/charts/compare/lidarr-19.1.12...lidarr-19.1.13) (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))
+
+
+## [lidarr-19.1.12](https://github.com/truecharts/charts/compare/lidarr-19.1.11...lidarr-19.1.12) (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))
+
+
+## [lidarr-19.1.11](https://github.com/truecharts/charts/compare/lidarr-19.1.10...lidarr-19.1.11) (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))
+
diff --git a/stable/lidarr/20.3.0/Chart.yaml b/stable/lidarr/20.3.0/Chart.yaml
new file mode 100644
index 0000000..97aa756
--- /dev/null
+++ b/stable/lidarr/20.3.0/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 2.2.0.4045
+dependencies:
+ - name: common
+ version: 18.1.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 20.3.0
diff --git a/stable/lidarr/20.3.0/README.md b/stable/lidarr/20.3.0/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/20.3.0/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/lidarr)
+
+**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/lidarr/20.3.0/app-readme.md b/stable/lidarr/20.3.0/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/20.3.0/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/20.3.0/charts/common-18.1.2.tgz b/stable/lidarr/20.3.0/charts/common-18.1.2.tgz
new file mode 100644
index 0000000..afb1de8
Binary files /dev/null and b/stable/lidarr/20.3.0/charts/common-18.1.2.tgz differ
diff --git a/stable/lidarr/20.3.0/ix_values.yaml b/stable/lidarr/20.3.0/ix_values.yaml
new file mode 100644
index 0000000..10a558c
--- /dev/null
+++ b/stable/lidarr/20.3.0/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.0.4045@sha256:c325ecc0a9a5ee604d06d21c6dab5bf4506c29622f108205b2f3eb42e0792a2e
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v1.6.1@sha256:60cf3d44aa0b7dea2a65160b2e2e373c1ae38cd6b12a45fe81b8afa45ac31c22
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/20.3.0/questions.yaml b/stable/lidarr/20.3.0/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/20.3.0/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/20.3.0/templates/NOTES.txt b/stable/lidarr/20.3.0/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/20.3.0/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/20.3.0/templates/common.yaml b/stable/lidarr/20.3.0/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/20.3.0/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/20.3.0/values.yaml b/stable/lidarr/20.3.0/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/20.3.1/.helmignore b/stable/lidarr/20.3.1/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/20.3.1/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/20.3.1/CHANGELOG.md b/stable/lidarr/20.3.1/CHANGELOG.md
new file mode 100644
index 0000000..296ec6a
--- /dev/null
+++ b/stable/lidarr/20.3.1/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+
+
+
+
+
+
+
+
+
+
+## [lidarr-19.1.19](https://github.com/truecharts/charts/compare/lidarr-19.1.18...lidarr-19.1.19) (2024-02-12)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030[@01d40bb](https://github.com/01d40bb) by renovate ([#18169](https://github.com/truecharts/charts/issues/18169))
+
+
+## [lidarr-19.1.18](https://github.com/truecharts/charts/compare/lidarr-19.1.17...lidarr-19.1.18) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993[@36b75d7](https://github.com/36b75d7) by renovate ([#17955](https://github.com/truecharts/charts/issues/17955))
+
+
+## [lidarr-19.1.17](https://github.com/truecharts/charts/compare/lidarr-19.1.16...lidarr-19.1.17) (2024-02-05)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993[@90ddf2d](https://github.com/90ddf2d) by renovate ([#17914](https://github.com/truecharts/charts/issues/17914))
+
+
+## [lidarr-19.1.16](https://github.com/truecharts/charts/compare/lidarr-19.1.15...lidarr-19.1.16) (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))
+
+
+## [lidarr-19.1.15](https://github.com/truecharts/charts/compare/lidarr-19.1.14...lidarr-19.1.15) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/exportarr to v1.6.1[@60cf3d4](https://github.com/60cf3d4) by renovate ([#17725](https://github.com/truecharts/charts/issues/17725))
+
+
+## [lidarr-19.1.14](https://github.com/truecharts/charts/compare/lidarr-19.1.13...lidarr-19.1.14) (2024-01-29)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941[@de7dac0](https://github.com/de7dac0) by renovate ([#17674](https://github.com/truecharts/charts/issues/17674))
+
+
+## [lidarr-19.1.13](https://github.com/truecharts/charts/compare/lidarr-19.1.12...lidarr-19.1.13) (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))
+
+
+## [lidarr-19.1.12](https://github.com/truecharts/charts/compare/lidarr-19.1.11...lidarr-19.1.12) (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))
+
+
+## [lidarr-19.1.11](https://github.com/truecharts/charts/compare/lidarr-19.1.10...lidarr-19.1.11) (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))
diff --git a/stable/lidarr/20.3.1/Chart.yaml b/stable/lidarr/20.3.1/Chart.yaml
new file mode 100644
index 0000000..f2948f1
--- /dev/null
+++ b/stable/lidarr/20.3.1/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 2.2.0.4053
+dependencies:
+ - name: common
+ version: 18.1.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: '>=1.24.0-0'
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/exportarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+type: application
+version: 20.3.1
diff --git a/stable/lidarr/20.3.1/README.md b/stable/lidarr/20.3.1/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/20.3.1/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/lidarr)
+
+**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/lidarr/20.3.1/app-readme.md b/stable/lidarr/20.3.1/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/20.3.1/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/20.3.1/charts/common-18.1.2.tgz b/stable/lidarr/20.3.1/charts/common-18.1.2.tgz
new file mode 100644
index 0000000..afb1de8
Binary files /dev/null and b/stable/lidarr/20.3.1/charts/common-18.1.2.tgz differ
diff --git a/stable/lidarr/20.3.1/ix_values.yaml b/stable/lidarr/20.3.1/ix_values.yaml
new file mode 100644
index 0000000..0e1808b
--- /dev/null
+++ b/stable/lidarr/20.3.1/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.0.4053@sha256:0dc627db78c12432cb0d39df036fcc26dc8e392d7e565f5d0c8d95a376811b07
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v1.6.1@sha256:60cf3d44aa0b7dea2a65160b2e2e373c1ae38cd6b12a45fe81b8afa45ac31c22
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/20.3.1/questions.yaml b/stable/lidarr/20.3.1/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/20.3.1/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/20.3.1/templates/NOTES.txt b/stable/lidarr/20.3.1/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/20.3.1/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/20.3.1/templates/common.yaml b/stable/lidarr/20.3.1/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/20.3.1/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/20.3.1/values.yaml b/stable/lidarr/20.3.1/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/21.5.2/.helmignore b/stable/lidarr/21.5.2/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/21.5.2/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/21.5.2/CHANGELOG.md b/stable/lidarr/21.5.2/CHANGELOG.md
new file mode 100644
index 0000000..36c2773
--- /dev/null
+++ b/stable/lidarr/21.5.2/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [lidarr-21.5.2](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.2) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.2](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.2) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.2](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.2) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.2](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.2) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.2](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.2) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.1](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.1) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.1](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.1) (2024-03-17)
diff --git a/stable/lidarr/21.5.2/Chart.yaml b/stable/lidarr/21.5.2/Chart.yaml
new file mode 100644
index 0000000..5bde981
--- /dev/null
+++ b/stable/lidarr/21.5.2/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 2.2.3.4098
+dependencies:
+ - name: common
+ version: 20.2.0
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: '>=1.24.0-0'
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 21.5.2
diff --git a/stable/lidarr/21.5.2/README.md b/stable/lidarr/21.5.2/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/21.5.2/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/lidarr)
+
+**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/lidarr/21.5.2/app-changelog.md b/stable/lidarr/21.5.2/app-changelog.md
new file mode 100644
index 0000000..9585177
--- /dev/null
+++ b/stable/lidarr/21.5.2/app-changelog.md
@@ -0,0 +1,15 @@
+
+
+## [lidarr-21.5.2](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.2) (2024-03-17)
+
+### Chore
+
+
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
\ No newline at end of file
diff --git a/stable/lidarr/21.5.2/app-readme.md b/stable/lidarr/21.5.2/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/21.5.2/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/21.5.2/charts/common-20.2.0.tgz b/stable/lidarr/21.5.2/charts/common-20.2.0.tgz
new file mode 100644
index 0000000..8bc207a
Binary files /dev/null and b/stable/lidarr/21.5.2/charts/common-20.2.0.tgz differ
diff --git a/stable/lidarr/21.5.2/ix_values.yaml b/stable/lidarr/21.5.2/ix_values.yaml
new file mode 100644
index 0000000..e0a46c0
--- /dev/null
+++ b/stable/lidarr/21.5.2/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.3.4098@sha256:ddb5035c57005792761e60371ab7e2ca3e0804fa5ab6952266b0d5f797ed08c2
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v2.0.0@sha256:760327e885a9bb5b818b56e8a6f818c9570eeaa9484bed122028adbf80bcaeb9
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/21.5.2/questions.yaml b/stable/lidarr/21.5.2/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/21.5.2/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/21.5.2/templates/NOTES.txt b/stable/lidarr/21.5.2/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/21.5.2/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/21.5.2/templates/common.yaml b/stable/lidarr/21.5.2/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/21.5.2/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/21.5.2/values.yaml b/stable/lidarr/21.5.2/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/21.5.3/.helmignore b/stable/lidarr/21.5.3/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/21.5.3/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/21.5.3/CHANGELOG.md b/stable/lidarr/21.5.3/CHANGELOG.md
new file mode 100644
index 0000000..685ffdb
--- /dev/null
+++ b/stable/lidarr/21.5.3/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [lidarr-21.5.3](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.3) (2024-03-23)
+
+### Chore
+
+
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.3](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.3) (2024-03-23)
+
+### Chore
+
+
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.3](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.3) (2024-03-23)
+
+### Chore
+
+
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.3](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.3) (2024-03-23)
+
+### Chore
+
+
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.3](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.3) (2024-03-23)
+
+### Chore
+
+
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.3](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.3) (2024-03-23)
+
+### Chore
+
diff --git a/stable/lidarr/21.5.3/Chart.yaml b/stable/lidarr/21.5.3/Chart.yaml
new file mode 100644
index 0000000..9c0405b
--- /dev/null
+++ b/stable/lidarr/21.5.3/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 2.2.3.4098
+dependencies:
+ - name: common
+ version: 20.2.2
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 21.5.3
diff --git a/stable/lidarr/21.5.3/README.md b/stable/lidarr/21.5.3/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/21.5.3/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/lidarr)
+
+**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/lidarr/21.5.3/app-changelog.md b/stable/lidarr/21.5.3/app-changelog.md
new file mode 100644
index 0000000..dcff1f4
--- /dev/null
+++ b/stable/lidarr/21.5.3/app-changelog.md
@@ -0,0 +1,17 @@
+
+
+## [lidarr-21.5.3](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.3) (2024-03-23)
+
+### Chore
+
+
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
\ No newline at end of file
diff --git a/stable/lidarr/21.5.3/app-readme.md b/stable/lidarr/21.5.3/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/21.5.3/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/21.5.3/charts/common-20.2.2.tgz b/stable/lidarr/21.5.3/charts/common-20.2.2.tgz
new file mode 100644
index 0000000..a03705c
Binary files /dev/null and b/stable/lidarr/21.5.3/charts/common-20.2.2.tgz differ
diff --git a/stable/lidarr/21.5.3/ix_values.yaml b/stable/lidarr/21.5.3/ix_values.yaml
new file mode 100644
index 0000000..e0a46c0
--- /dev/null
+++ b/stable/lidarr/21.5.3/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.3.4098@sha256:ddb5035c57005792761e60371ab7e2ca3e0804fa5ab6952266b0d5f797ed08c2
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v2.0.0@sha256:760327e885a9bb5b818b56e8a6f818c9570eeaa9484bed122028adbf80bcaeb9
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/21.5.3/questions.yaml b/stable/lidarr/21.5.3/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/21.5.3/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/21.5.3/templates/NOTES.txt b/stable/lidarr/21.5.3/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/21.5.3/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/21.5.3/templates/common.yaml b/stable/lidarr/21.5.3/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/21.5.3/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/21.5.3/values.yaml b/stable/lidarr/21.5.3/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/21.5.4/.helmignore b/stable/lidarr/21.5.4/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/21.5.4/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/21.5.4/CHANGELOG.md b/stable/lidarr/21.5.4/CHANGELOG.md
new file mode 100644
index 0000000..e07d165
--- /dev/null
+++ b/stable/lidarr/21.5.4/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
diff --git a/stable/lidarr/21.5.4/Chart.yaml b/stable/lidarr/21.5.4/Chart.yaml
new file mode 100644
index 0000000..9e077b8
--- /dev/null
+++ b/stable/lidarr/21.5.4/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 2.2.3.4098
+dependencies:
+ - name: common
+ version: 20.2.3
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 21.5.4
diff --git a/stable/lidarr/21.5.4/README.md b/stable/lidarr/21.5.4/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/21.5.4/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/lidarr)
+
+**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/lidarr/21.5.4/app-changelog.md b/stable/lidarr/21.5.4/app-changelog.md
new file mode 100644
index 0000000..8f62b3f
--- /dev/null
+++ b/stable/lidarr/21.5.4/app-changelog.md
@@ -0,0 +1,19 @@
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
\ No newline at end of file
diff --git a/stable/lidarr/21.5.4/app-readme.md b/stable/lidarr/21.5.4/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/21.5.4/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/21.5.4/charts/common-20.2.3.tgz b/stable/lidarr/21.5.4/charts/common-20.2.3.tgz
new file mode 100644
index 0000000..701ca71
Binary files /dev/null and b/stable/lidarr/21.5.4/charts/common-20.2.3.tgz differ
diff --git a/stable/lidarr/21.5.4/ix_values.yaml b/stable/lidarr/21.5.4/ix_values.yaml
new file mode 100644
index 0000000..e0a46c0
--- /dev/null
+++ b/stable/lidarr/21.5.4/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.3.4098@sha256:ddb5035c57005792761e60371ab7e2ca3e0804fa5ab6952266b0d5f797ed08c2
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v2.0.0@sha256:760327e885a9bb5b818b56e8a6f818c9570eeaa9484bed122028adbf80bcaeb9
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/21.5.4/questions.yaml b/stable/lidarr/21.5.4/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/21.5.4/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/21.5.4/templates/NOTES.txt b/stable/lidarr/21.5.4/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/21.5.4/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/21.5.4/templates/common.yaml b/stable/lidarr/21.5.4/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/21.5.4/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/21.5.4/values.yaml b/stable/lidarr/21.5.4/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/21.5.5/.helmignore b/stable/lidarr/21.5.5/.helmignore
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/stable/lidarr/21.5.5/.helmignore
@@ -0,0 +1,30 @@
+# 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/lidarr/21.5.5/CHANGELOG.md b/stable/lidarr/21.5.5/CHANGELOG.md
new file mode 100644
index 0000000..79a9134
--- /dev/null
+++ b/stable/lidarr/21.5.5/CHANGELOG.md
@@ -0,0 +1,99 @@
+---
+title: Changelog
+---
+
+
+*for the complete changelog, please refer to the website*
+
+**Important:**
+
+
+## [lidarr-21.5.5](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.5) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.5](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.5) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
+
+
+## [lidarr-21.5.4](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.4) (2024-03-23)
+
+### Chore
+
+
+
+- update container image common to v20.2.3[@06e462e](https://github.com/06e462e) by renovate ([#19673](https://github.com/truecharts/charts/issues/19673))
+
+- update container image common to v20.2.2[@f7d0b92](https://github.com/f7d0b92) by renovate ([#19432](https://github.com/truecharts/charts/issues/19432))
diff --git a/stable/lidarr/21.5.5/Chart.yaml b/stable/lidarr/21.5.5/Chart.yaml
new file mode 100644
index 0000000..ba9f5ab
--- /dev/null
+++ b/stable/lidarr/21.5.5/Chart.yaml
@@ -0,0 +1,39 @@
+annotations:
+ max_scale_version: 24.04.0
+ 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.11"
+ truecharts.org/train: stable
+apiVersion: v2
+appVersion: 2.2.3.4098
+dependencies:
+ - name: common
+ version: 20.2.4
+ repository: oci://tccr.io/truecharts
+ condition: ""
+ alias: ""
+ tags: []
+ import-values: []
+deprecated: false
+description: Looks and smells like Sonarr but made for music
+home: https://truecharts.org/charts/stable/lidarr
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+keywords:
+ - lidarr
+ - torrent
+ - usenet
+kubeVersion: ">=1.24.0-0"
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: https://truecharts.org
+name: lidarr
+sources:
+ - https://github.com/Lidarr/Lidarr
+ - https://github.com/truecharts/charts/tree/master/charts/stable/lidarr
+ - https://ghcr.io/onedr0p/lidarr-develop
+ - https://ghcr.io/onedr0p/exportarr
+type: application
+version: 21.5.5
diff --git a/stable/lidarr/21.5.5/README.md b/stable/lidarr/21.5.5/README.md
new file mode 100644
index 0000000..5dd4de9
--- /dev/null
+++ b/stable/lidarr/21.5.5/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/lidarr)
+
+**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/lidarr/21.5.5/app-changelog.md b/stable/lidarr/21.5.5/app-changelog.md
new file mode 100644
index 0000000..a5f1197
--- /dev/null
+++ b/stable/lidarr/21.5.5/app-changelog.md
@@ -0,0 +1,21 @@
+
+
+## [lidarr-21.5.5](https://github.com/truecharts/charts/compare/lidarr-21.4.0...lidarr-21.5.5) (2024-03-25)
+
+### Chore
+
+
+
+- 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))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098[@ddb5035](https://github.com/ddb5035) by renovate ([#19416](https://github.com/truecharts/charts/issues/19416))
+
+- update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090[@4978f1e](https://github.com/4978f1e) by renovate ([#19404](https://github.com/truecharts/charts/issues/19404))
+
+- 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 ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073[@ae2b24d](https://github.com/ae2b24d) by renovate ([#19254](https://github.com/truecharts/charts/issues/19254))
\ No newline at end of file
diff --git a/stable/lidarr/21.5.5/app-readme.md b/stable/lidarr/21.5.5/app-readme.md
new file mode 100644
index 0000000..ab0ee61
--- /dev/null
+++ b/stable/lidarr/21.5.5/app-readme.md
@@ -0,0 +1,8 @@
+Looks and smells like Sonarr but made for music
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lidarr](https://truecharts.org/charts/stable/lidarr)
+
+---
+
+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/lidarr/21.5.5/charts/common-20.2.4.tgz b/stable/lidarr/21.5.5/charts/common-20.2.4.tgz
new file mode 100644
index 0000000..e02a4ec
Binary files /dev/null and b/stable/lidarr/21.5.5/charts/common-20.2.4.tgz differ
diff --git a/stable/lidarr/21.5.5/ix_values.yaml b/stable/lidarr/21.5.5/ix_values.yaml
new file mode 100644
index 0000000..e0a46c0
--- /dev/null
+++ b/stable/lidarr/21.5.5/ix_values.yaml
@@ -0,0 +1,109 @@
+image:
+ repository: ghcr.io/onedr0p/lidarr-develop
+ pullPolicy: IfNotPresent
+ tag: 2.2.3.4098@sha256:ddb5035c57005792761e60371ab7e2ca3e0804fa5ab6952266b0d5f797ed08c2
+exportarrImage:
+ repository: ghcr.io/onedr0p/exportarr
+ pullPolicy: IfNotPresent
+ tag: v2.0.0@sha256:760327e885a9bb5b818b56e8a6f818c9570eeaa9484bed122028adbf80bcaeb9
+securityContext:
+ container:
+ readOnlyRootFilesystem: false
+service:
+ main:
+ ports:
+ main:
+ port: 8686
+ metrics:
+ enabled: true
+ type: ClusterIP
+ targetSelector: exportarr
+ ports:
+ metrics:
+ enabled: true
+ port: 8687
+ targetSelector: exportarr
+workload:
+ main:
+ podSpec:
+ containers:
+ main:
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /ping
+ readiness:
+ enabled: true
+ type: http
+ path: /ping
+ startup:
+ enabled: true
+ type: http
+ path: /ping
+ env:
+ LIDARR__PORT: "{{ .Values.service.main.ports.main.port }}"
+ LIDARR__AUTHENTICATION_METHOD: ""
+ exportarr:
+ enabled: true
+ type: Deployment
+ strategy: RollingUpdate
+ replicas: 1
+ podSpec:
+ containers:
+ exportarr:
+ primary: true
+ enabled: true
+ imageSelector: exportarrImage
+ args:
+ - lidarr
+ probes:
+ liveness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ readiness:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ startup:
+ enabled: true
+ type: http
+ path: /healthz
+ port: "{{ .Values.service.metrics.ports.metrics.port }}"
+ env:
+ INTERFACE: 0.0.0.0
+ PORT: "{{ .Values.service.metrics.ports.metrics.port }}"
+ URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}'
+ # additional metrics (slow)
+ # ENABLE_ADDITIONAL_METRICS: false
+ # enable gathering unknown queue items
+ # ENABLE_UNKNOWN_QUEUE_ITEMS: false
+ CONFIG: "/config/config.xml"
+persistence:
+ config:
+ enabled: true
+ targetSelector:
+ main:
+ main:
+ mountPath: /config
+ exportarr:
+ exportarr:
+ mountPath: /config
+ readOnly: true
+metrics:
+ main:
+ enabled: true
+ type: "servicemonitor"
+ endpoints:
+ - port: metrics
+ path: /metrics
+ targetSelector: metrics
+ prometheusRule:
+ enabled: false
+portal:
+ open:
+ enabled: true
+updated: true
diff --git a/stable/lidarr/21.5.5/questions.yaml b/stable/lidarr/21.5.5/questions.yaml
new file mode 100644
index 0000000..86ad1ce
--- /dev/null
+++ b/stable/lidarr/21.5.5/questions.yaml
@@ -0,0 +1,2899 @@
+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: env
+ group: App Configuration
+ label: Image Environment
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: LIDARR__AUTHENTICATION_METHOD
+ label: Auth Method
+ description: Sets the auth method.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: In-App Setting
+ - value: External
+ description: External/None
+ - value: Basic
+ description: Basic
+ - value: Forms
+ description: Forms
+ - 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: 8686
+ 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: '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: 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: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
+
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
+
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
diff --git a/stable/lidarr/21.5.5/templates/NOTES.txt b/stable/lidarr/21.5.5/templates/NOTES.txt
new file mode 100644
index 0000000..efcb74c
--- /dev/null
+++ b/stable/lidarr/21.5.5/templates/NOTES.txt
@@ -0,0 +1 @@
+{{- include "tc.v1.common.lib.chart.notes" $ -}}
diff --git a/stable/lidarr/21.5.5/templates/common.yaml b/stable/lidarr/21.5.5/templates/common.yaml
new file mode 100644
index 0000000..3c93f57
--- /dev/null
+++ b/stable/lidarr/21.5.5/templates/common.yaml
@@ -0,0 +1,11 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.v1.common.loader.init" . -}}
+
+{{/* Disable [exportarr] if requested */}}
+{{- if not .Values.metrics.main.enabled -}}
+ {{- $_ := set .Values.workload.exportarr "enabled" false -}}
+ {{- $_ := set .Values.service.metrics "enabled" false -}}
+{{- end -}}
+
+{{/* Render the templates */}}
+{{- include "tc.v1.common.loader.apply" . -}}
diff --git a/stable/lidarr/21.5.5/values.yaml b/stable/lidarr/21.5.5/values.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/stable/lidarr/app_versions.json b/stable/lidarr/app_versions.json
new file mode 100644
index 0000000..42847e0
--- /dev/null
+++ b/stable/lidarr/app_versions.json
@@ -0,0 +1,50478 @@
+{
+ "21.5.5": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/21.5.5",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.3.4098_21.5.5",
+ "version": "21.5.5",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "2.2.3.4098",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.4",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "21.5.5"
+ },
+ "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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.4@f245f5c by renovate (#19731)
\n \n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n"
+ },
+ "21.5.4": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/21.5.4",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.3.4098_21.5.4",
+ "version": "21.5.4",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "2.2.3.4098",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "21.5.4"
+ },
+ "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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.3@06e462e by renovate (#19673)
\n \n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n
"
+ },
+ "21.5.3": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/21.5.3",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.3.4098_21.5.3",
+ "version": "21.5.3",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "2.2.3.4098",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "21.5.3"
+ },
+ "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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image common to v20.2.2@f7d0b92 by renovate (#19432)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
"
+ },
+ "21.5.2": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/21.5.2",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.3.4098_21.5.2",
+ "version": "21.5.2",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "2.2.3.4098",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "20.2.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "21.5.2"
+ },
+ "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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.3.4098@ddb5035 by renovate (#19416)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n\nChore
\n\n- \n
update container image ghcr.io/onedr0p/lidarr-develop to v2.2.2.4090@4978f1e by renovate (#19404)
\n \n- \n
update container image common to v20.2.0@91ade87 by renovate (#19361)
\n \n- \n
update container image ghcr.io/onedr0p/lidarr-develop to 2.2.1.4073@ae2b24d by renovate (#19254)
\n \n
\n"
+ },
+ "20.3.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/20.3.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.0.4053_20.3.1",
+ "version": "20.3.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "2.2.0.4053",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.1.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/exportarr",
+ "https://ghcr.io/onedr0p/lidarr-develop"
+ ],
+ "type": "application",
+ "version": "20.3.1"
+ },
+ "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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030@01d40bb by renovate (#18169)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993@36b75d7 by renovate (#17955)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993@90ddf2d by renovate (#17914)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/exportarr to v1.6.1@60cf3d4 by renovate (#17725)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941@de7dac0 by renovate (#17674)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
"
+ },
+ "20.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/20.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.0.4045_20.3.0",
+ "version": "20.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "2.2.0.4045",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.1.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "20.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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030@01d40bb by renovate (#18169)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993@36b75d7 by renovate (#17955)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993@90ddf2d by renovate (#17914)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/exportarr to v1.6.1@60cf3d4 by renovate (#17725)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941@de7dac0 by renovate (#17674)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
"
+ },
+ "20.2.1": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/20.2.1",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.0.4045_20.2.1",
+ "version": "20.2.1",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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.11",
+ "truecharts.org/train": "stable"
+ },
+ "apiVersion": "v2",
+ "appVersion": "2.2.0.4045",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.0.3",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "20.2.1"
+ },
+ "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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030@01d40bb by renovate (#18169)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993@36b75d7 by renovate (#17955)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993@90ddf2d by renovate (#17914)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/exportarr to v1.6.1@60cf3d4 by renovate (#17725)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941@de7dac0 by renovate (#17674)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n"
+ },
+ "20.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/20.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/timezone",
+ "definitions/certificate",
+ "definitions/interface",
+ "normalize/interfaceConfiguration"
+ ],
+ "human_version": "2.2.0.4045_20.2.0",
+ "version": "20.2.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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": "2.2.0.4045",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "18.0.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "20.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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "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": "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030@01d40bb by renovate (#18169)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993@36b75d7 by renovate (#17955)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993@90ddf2d by renovate (#17914)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/exportarr to v1.6.1@60cf3d4 by renovate (#17725)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941@de7dac0 by renovate (#17674)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n"
+ },
+ "19.3.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/19.3.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "2.1.7.4030_19.3.0",
+ "version": "19.3.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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": "2.1.7.4030",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.5.0",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/lidarr-develop",
+ "https://ghcr.io/onedr0p/exportarr"
+ ],
+ "type": "application",
+ "version": "19.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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030@01d40bb by renovate (#18169)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993@36b75d7 by renovate (#17955)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993@90ddf2d by renovate (#17914)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/exportarr to v1.6.1@60cf3d4 by renovate (#17725)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941@de7dac0 by renovate (#17674)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
"
+ },
+ "19.2.0": {
+ "healthy": true,
+ "supported": true,
+ "healthy_error": null,
+ "location": "/home/runner/work/catalog/catalog/stable/lidarr/19.2.0",
+ "last_update": "2024-03-25 06:34:24",
+ "required_features": [
+ "definitions/interface",
+ "normalize/interfaceConfiguration",
+ "definitions/gpuConfiguration",
+ "definitions/timezone",
+ "definitions/certificate"
+ ],
+ "human_version": "2.1.7.4030_19.2.0",
+ "version": "19.2.0",
+ "chart_metadata": {
+ "annotations": {
+ "max_scale_version": "24.04.0",
+ "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": "2.1.7.4030",
+ "dependencies": [
+ {
+ "name": "common",
+ "version": "17.4.2",
+ "repository": "oci://tccr.io/truecharts",
+ "condition": "",
+ "alias": "",
+ "tags": [],
+ "import-values": []
+ }
+ ],
+ "deprecated": false,
+ "description": "Looks and smells like Sonarr but made for music",
+ "home": "https://truecharts.org/charts/stable/lidarr",
+ "icon": "https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png",
+ "keywords": [
+ "lidarr",
+ "torrent",
+ "usenet"
+ ],
+ "kubeVersion": ">=1.24.0-0",
+ "maintainers": [
+ {
+ "name": "TrueCharts",
+ "email": "info@truecharts.org",
+ "url": "https://truecharts.org"
+ }
+ ],
+ "name": "lidarr",
+ "sources": [
+ "https://github.com/Lidarr/Lidarr",
+ "https://github.com/truecharts/charts/tree/master/charts/stable/lidarr",
+ "https://ghcr.io/onedr0p/exportarr",
+ "https://ghcr.io/onedr0p/lidarr-develop"
+ ],
+ "type": "application",
+ "version": "19.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": "env",
+ "group": "App Configuration",
+ "label": "Image Environment",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "LIDARR__AUTHENTICATION_METHOD",
+ "label": "Auth Method",
+ "description": "Sets the auth method.",
+ "schema": {
+ "type": "string",
+ "default": "",
+ "enum": [
+ {
+ "value": "",
+ "description": "In-App Setting"
+ },
+ {
+ "value": "External",
+ "description": "External/None"
+ },
+ {
+ "value": "Basic",
+ "description": "Basic"
+ },
+ {
+ "value": "Forms",
+ "description": "Forms"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "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": 8686,
+ "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": "metrics",
+ "group": "Metrics",
+ "label": "Prometheus Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "main",
+ "label": "Main Metrics",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false,
+ "show_subquestions_if": true,
+ "subquestions": [
+ {
+ "variable": "prometheusRule",
+ "label": "PrometheusRule",
+ "description": "Enable and configure Prometheus Rules for the App.",
+ "schema": {
+ "additional_attrs": true,
+ "type": "dict",
+ "attrs": [
+ {
+ "variable": "enabled",
+ "label": "Enabled",
+ "description": "Enable Prometheus Metrics",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "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": "Looks and smells like Sonarr but made for music
\nThis App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/lidarr
\n
\nTrueCharts 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": "
\ntitle: README
\nGeneral Info
\nTrueCharts 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.
\nFor more information about this App, please check the docs on the TrueCharts website
\nThis chart is not maintained by the upstream project and any issues with the chart should be raised here
\nSupport
\n\n
\nSponsor TrueCharts
\nTrueCharts 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!
\nAll Rights Reserved - The TrueCharts Project
",
+ "changelog": "
\ntitle: Changelog
\nfor the complete changelog, please refer to the website
\nImportant:
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.7.4030@01d40bb by renovate (#18169)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to 2.1.6.3993@36b75d7 by renovate (#17955)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.6.3993@90ddf2d by renovate (#17914)
\n
\n\nChore
\n\n- update container image common to v17.2.30@19ad5ec by renovate (#17804)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/exportarr to v1.6.1@60cf3d4 by renovate (#17725)
\n
\n\nChore
\n\n- update container image ghcr.io/onedr0p/lidarr-develop to v2.1.4.3941@de7dac0 by renovate (#17674)
\n
\n\nChore
\n\n- update container image common to v17.2.29@d7c41a3 by renovate (#17545)
\n
\n\nChore
\n\n- update container image common to v17.2.28@918b4c5 by renovate (#17478)
\n
\n\nChore
\n\n- update container image common to v17.2.26@24c98f7 by renovate (#17409)
\n
\n\nChore
\n\n- update metadata in chart.yaml (#17457)
\n
"
+ }
+}
\ No newline at end of file
diff --git a/stable/lidarr/item.yaml b/stable/lidarr/item.yaml
new file mode 100644
index 0000000..aef1c87
--- /dev/null
+++ b/stable/lidarr/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/lidarr.png
+categories:
+ - media
+screenshots: []