diff --git a/incubator/lancache-monolithic/0.0.1/CHANGELOG.md b/incubator/lancache-monolithic/0.0.1/CHANGELOG.md
new file mode 100644
index 00000000000..159683cd443
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/CHANGELOG.md
@@ -0,0 +1,10 @@
+# Changelog
+
+
+
+### lancache-monolithic-0.0.1 (2022-07-12)
+
+#### Feat
+
+* Add lancache-monolithic ([#3143](https://github.com/truecharts/apps/issues/3143))
+
diff --git a/incubator/lancache-monolithic/0.0.1/Chart.lock b/incubator/lancache-monolithic/0.0.1/Chart.lock
new file mode 100644
index 00000000000..9d5a5fe3fcc
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://library-charts.truecharts.org
+ version: 10.4.4
+digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396
+generated: "2022-07-12T17:37:32.290960651Z"
diff --git a/incubator/lancache-monolithic/0.0.1/Chart.yaml b/incubator/lancache-monolithic/0.0.1/Chart.yaml
new file mode 100644
index 00000000000..6c1ebbf19fa
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/Chart.yaml
@@ -0,0 +1,29 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: lancache-monolithic
+version: 0.0.1
+appVersion: "latest"
+description: A monolithic lancache service capable of caching all cdn's in a single instance.
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/charts/incubator/lancache-monolithic
+icon: https://truecharts.org/img/appicons/monolithic.png
+keywords:
+ - monolithic
+ - lancache
+sources:
+ - https://hub.docker.com/r/lancachenet/monolithic
+ - https://github.com/lancachenet/monolithic
+dependencies:
+ - name: common
+ repository: https://library-charts.truecharts.org
+ version: 10.4.4
+maintainers:
+ - email: info@truecharts.org
+ name: TrueCharts
+ url: https://truecharts.org
+annotations:
+ truecharts.org/catagories: |
+ - gaming
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/grade: U
diff --git a/incubator/lancache-monolithic/0.0.1/README.md b/incubator/lancache-monolithic/0.0.1/README.md
new file mode 100644
index 00000000000..334ee3bcfc9
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/README.md
@@ -0,0 +1,41 @@
+# lancache-monolithic
+
+A monolithic lancache service capable of caching all cdn's in a single instance.
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://library-charts.truecharts.org | common | 10.4.4 |
+
+## Installing the Chart
+
+To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/).
+
+## Upgrading, Rolling Back and Uninstalling the Chart
+
+To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/).
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide.
+
+## Support
+
+- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Adding-TrueCharts/) first.
+- See the [Wiki](https://truecharts.org)
+- Check our [Discord](https://discord.gg/tVsPTHWTtr)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+---
+All Rights Reserved - The TrueCharts Project
diff --git a/incubator/lancache-monolithic/0.0.1/app-readme.md b/incubator/lancache-monolithic/0.0.1/app-readme.md
new file mode 100644
index 00000000000..0ca29e7d13c
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/app-readme.md
@@ -0,0 +1,3 @@
+A monolithic lancache service capable of caching all cdn's in a single instance.
+
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
diff --git a/incubator/lancache-monolithic/0.0.1/charts/common-10.4.4.tgz b/incubator/lancache-monolithic/0.0.1/charts/common-10.4.4.tgz
new file mode 100644
index 00000000000..8604b47288a
Binary files /dev/null and b/incubator/lancache-monolithic/0.0.1/charts/common-10.4.4.tgz differ
diff --git a/incubator/lancache-monolithic/0.0.1/icon.png b/incubator/lancache-monolithic/0.0.1/icon.png
new file mode 100644
index 00000000000..713a38cb868
Binary files /dev/null and b/incubator/lancache-monolithic/0.0.1/icon.png differ
diff --git a/incubator/lancache-monolithic/0.0.1/ix_values.yaml b/incubator/lancache-monolithic/0.0.1/ix_values.yaml
new file mode 100644
index 00000000000..6838ffc33f1
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/ix_values.yaml
@@ -0,0 +1,37 @@
+image:
+ repository: lancachenet/monolithic
+ pullPolicy: IfNotPresent
+ tag: latest@sha256:f233ed96ab6323a4463a26665b2faca38e8b5098b47227855be5328ab9a3cef4
+
+securityContext:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+
+podSecurityContext:
+ runAsUser: 0
+ runAsGroup: 0
+
+env:
+ CACHE_DOMAINS_REPO: "https://github.com/uklans/cache-domains.git"
+ CACHE_DOMAINS_BRANCH: "master"
+ UPSTREAM_DNS: "1.1.1.1 1.0.0.1"
+ CACHE_DISK_SIZE: "1000000m"
+ CACHE_MAX_AGE: "3560d"
+ CACHE_INDEX_SIZE: "500m"
+ NOFETCH: false
+
+service:
+ main:
+ ports:
+ main:
+ port: 10279
+ targetPort: 80
+ protocol: HTTP
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/data/cache"
+ logs:
+ enabled: true
+ mountPath: "/data/logs"
diff --git a/incubator/lancache-monolithic/0.0.1/questions.yaml b/incubator/lancache-monolithic/0.0.1/questions.yaml
new file mode 100644
index 00000000000..9813b5552dc
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/questions.yaml
@@ -0,0 +1,2642 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Controller"
+ description: "Configure workload deployment"
+ - name: "Container Configuration"
+ description: "additional container configuration"
+ - name: "App Configuration"
+ description: "App specific config options"
+ - name: "Networking and Services"
+ description: "Configure Network and Services for container"
+ - name: "Storage and Persistence"
+ description: "Persist and share data that is separate from the container"
+ - name: "Ingress"
+ description: "Ingress Configuration"
+ - name: "Security and Permissions"
+ description: "Configure security context and permissions"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Middlewares"
+ description: "Traefik Middlewares"
+ - name: "Metrics"
+ description: "Metrics"
+ - name: "Addons"
+ description: "Addon Configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+portals: {}
+questions:
+ - variable: global
+ label: "global settings"
+ group: "Controller"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: isSCALE
+ label: "flag this is SCALE"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
+ - variable: controller
+ group: "Controller"
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: advanced
+ label: "Show Advanced Controller Settings"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: type
+ description: "Please specify type of workload to deploy"
+ label: "(Advanced) Controller Type"
+ schema:
+ type: string
+ default: "deployment"
+ required: true
+ enum:
+ - value: "deployment"
+ description: "Deployment"
+ - value: "statefulset"
+ description: "Statefulset"
+ - value: "daemonset"
+ description: "Daemonset"
+ - variable: replicas
+ description: "Number of desired pod replicas"
+ label: "Desired Replicas"
+ schema:
+ type: int
+ default: 1
+ required: true
+ - variable: strategy
+ description: "Please specify type of workload to deploy"
+ label: "(Advanced) Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ required: true
+ enum:
+ - value: "Recreate"
+ description: "Recreate: Kill existing pods before creating new ones"
+ - value: "RollingUpdate"
+ description: "RollingUpdate: Create new pods and then kill old ones"
+ - value: "OnDelete"
+ description: "(Legacy) OnDelete: ignore .spec.template changes"
+ - variable: expert
+ label: "Show Expert Configuration Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: extraArgs
+ label: "Extra Args"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: arg
+ label: "arg"
+ schema:
+ type: string
+ - variable: labelsList
+ label: "Controller Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: " Controller Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: env
+ group: "Container Configuration"
+ label: "Image Environment"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: CACHE_DOMAINS_REPO
+ label: "CACHE DOMAINS REPO"
+ description: "The github repo url for the cache_domains files to use to populate the cdn maps."
+ schema:
+ type: string
+ default: "https://github.com/uklans/cache-domains.git"
+ - variable: CACHE_DOMAINS_BRANCH
+ label: "CACHE DOMAINS BRANCH"
+ description: "The branch of the CACHE_DOMAINS_REPO to use"
+ schema:
+ type: string
+ default: "master"
+ - variable: NOFETCH
+ label: "NO FETCH"
+ description: "Turn off all git pull operations and use stored data"
+ schema:
+ type: boolean
+ default: false
+ - variable: UPSTREAM_DNS
+ label: "UPSTREAM DNS"
+ description: "Upstream DNS server(s) the cache should use(separated by spaces). Do NOT point this at lancache-dns)"
+ schema:
+ type: string
+ default: "1.1.1.1 1.0.0.1"
+ - variable: CACHE_DISK_SIZE
+ label: "CACHE DISK SIZE"
+ description: "The amount of disk space the container should use for caching data"
+ schema:
+ type: string
+ default: "1000000m"
+ - variable: CACHE_MAX_AGE
+ label: "CACHE MAX AGE"
+ description: "The maximum amount of time a file should be held in cache"
+ schema:
+ type: string
+ default: "3560d"
+ - variable: CACHE_INDEX_SIZE
+ label: "CACHE INDEX SIZE"
+ description: "Amount of index memory for the nginx cache manager. We recommend 250m of index memory per 1TB"
+ schema:
+ type: string
+ default: "3560d"
+ - variable: TZ
+ label: "Timezone"
+ group: "Container Configuration"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ - variable: envList
+ label: "Image environment"
+ group: "Container Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: expertpodconf
+ group: "Container Configuration"
+ label: "Show Expert Config"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: tty
+ label: "Enable TTY"
+ description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled."
+ group: "Workload Details"
+ schema:
+ type: boolean
+ default: false
+ - variable: stdin
+ label: "Enable STDIN"
+ description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled."
+ group: "Workload Details"
+ schema:
+ type: boolean
+ default: false
+ - variable: termination
+ group: "Container Configuration"
+ label: "Termination settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: gracePeriodSeconds
+ label: "Grace Period Seconds"
+ schema:
+ type: int
+ default: 10
+ - variable: podLabelsList
+ group: "Container Configuration"
+ label: "Pod Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: podLabelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: podAnnotationsList
+ group: "Container Configuration"
+ label: "Pod Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: podAnnotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: "Simple"
+ enum:
+ - value: "Simple"
+ description: "Simple"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - value: "NodePort"
+ description: "NodePort (Advanced)"
+ - value: "LoadBalancer"
+ description: "LoadBalancer (Advanced)"
+ - variable: loadBalancerIP
+ label: "LoadBalancer IP"
+ description: "LoadBalancerIP"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: "External IP"
+ schema:
+ type: string
+ - variable: ipFamilyPolicy
+ label: "IP Family Policy"
+ description: "(Advanced) Specify the ip policy"
+ schema:
+ show_if: [["type", "!=", "Simple"]]
+ type: string
+ default: "SingleStack"
+ enum:
+ - value: "SingleStack"
+ description: "SingleStack"
+ - value: "PreferDualStack"
+ description: "PreferDualStack"
+ - value: "RequireDualStack"
+ description: "RequireDualStack"
+ - variable: ipFamilies
+ label: "(advanced) IP families"
+ description: "(advanced) The ip families that should be used"
+ schema:
+ show_if: [["type", "!=", "Simple"]]
+ type: list
+ default: []
+ items:
+ - variable: ipFamily
+ label: "IP family"
+ schema:
+ type: string
+ - variable: ports
+ label: "Service's Port(s) Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Service Port Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: "Port"
+ description: "This port exposes the container port on the service"
+ schema:
+ type: int
+ default: 10279
+ required: true
+ - variable: advanced
+ label: "Show Advanced settings"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: enabled
+ label: "Enable the port"
+ schema:
+ type: boolean
+ default: true
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - value: TCP
+ description: "TCP"
+ - value: "UDP"
+ description: "UDP"
+ - variable: nodePort
+ label: "Node Port (Optional)"
+ description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ - variable: targetPort
+ label: "Target Port"
+ description: "The internal(!) port on the container the Application runs on"
+ schema:
+ type: int
+ default: 80
+
+ - variable: serviceexpert
+ group: "Networking and Services"
+ label: "Show Expert Config"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hostNetwork
+ group: "Networking and Services"
+ label: "Host-Networking (Complicated)"
+ schema:
+ type: boolean
+ default: false
+
+ - variable: externalInterfaces
+ description: "Add External Interfaces"
+ label: "Add external Interfaces"
+ group: "Networking"
+ schema:
+ type: list
+ items:
+ - variable: interfaceConfiguration
+ description: "Interface Configuration"
+ label: "Interface Configuration"
+ schema:
+ type: dict
+ $ref:
+ - "normalize/interfaceConfiguration"
+ attrs:
+ - variable: hostInterface
+ description: "Please specify host interface"
+ label: "Host Interface"
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/interface"
+ - variable: ipam
+ description: "Define how IP Address will be managed"
+ label: "IP Address Management"
+ schema:
+ type: dict
+ required: true
+ attrs:
+ - variable: type
+ description: "Specify type for IPAM"
+ label: "IPAM Type"
+ schema:
+ type: string
+ required: true
+ enum:
+ - value: "dhcp"
+ description: "Use DHCP"
+ - value: "static"
+ description: "Use static IP"
+ show_subquestions_if: "static"
+ subquestions:
+ - variable: staticIPConfigurations
+ label: "Static IP Addresses"
+ schema:
+ type: list
+ items:
+ - variable: staticIP
+ label: "Static IP"
+ schema:
+ type: ipaddr
+ cidr: true
+ - variable: staticRoutes
+ label: "Static Routes"
+ schema:
+ type: list
+ items:
+ - variable: staticRouteConfiguration
+ label: "Static Route Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: destination
+ label: "Destination"
+ schema:
+ type: ipaddr
+ cidr: true
+ required: true
+ - variable: gateway
+ label: "Gateway"
+ schema:
+ type: ipaddr
+ cidr: false
+ required: true
+
+ - variable: dnsPolicy
+ group: "Networking and Services"
+ label: "dnsPolicy"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "ClusterFirst"
+ description: "ClusterFirst"
+ - value: "ClusterFirstWithHostNet"
+ description: "ClusterFirstWithHostNet"
+ - value: "None"
+ description: "None"
+
+ - variable: dnsConfig
+ label: "DNS Configuration"
+ group: "Networking and Services"
+ description: "Specify custom DNS configuration which will be applied to the pod"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: nameservers
+ label: "Nameservers"
+ schema:
+ default: []
+ type: list
+ items:
+ - variable: nameserver
+ label: "Nameserver"
+ schema:
+ type: string
+ - variable: options
+ label: "options"
+ schema:
+ default: []
+ type: list
+ items:
+ - variable: option
+ label: "Option Entry"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: searches
+ label: "Searches"
+ schema:
+ default: []
+ type: list
+ items:
+ - variable: search
+ label: "Search Entry"
+ schema:
+ type: string
+
+ - variable: serviceList
+ label: "Add Manual Custom Services"
+ group: "Networking and Services"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: serviceListEntry
+ label: "Custom Service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ - variable: type
+ label: "Service Type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: "Simple"
+ enum:
+ - value: "Simple"
+ description: "Simple"
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - value: "LoadBalancer"
+ description: "LoadBalancer"
+ - variable: loadBalancerIP
+ label: "LoadBalancer IP"
+ description: "LoadBalancerIP"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: "External IP"
+ 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: nodePort
+ label: "Node Port (Optional)"
+ description: "This port gets exposed to the node. Only considered when service type is NodePort"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+
+ - 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: "simplePVC"
+ enum:
+ - value: "simplePVC"
+ description: "PVC (simple)"
+ - value: "simpleHP"
+ description: "HostPath (simple)"
+ - value: "emptyDir"
+ description: "emptyDir"
+ - value: "pvc"
+ description: "pvc"
+ - value: "hostPath"
+ description: "hostPath"
+ - value: "nfs"
+ description: "NFS Share"
+ - variable: server
+ label: "NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: "Path on NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: setPermissionsSimple
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: boolean
+ default: true
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: true
+ - variable: readOnly
+ label: "readOnly"
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPathSimple
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: hostpath
+ - variable: hostPath
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: "EmptyDir Medium"
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "Memory"
+ description: "Memory"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "999Gi"
+ - variable: hostPathType
+ label: "(Advanced) hostPath Type"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "DirectoryOrCreate"
+ description: "DirectoryOrCreate"
+ - value: "Directory"
+ description: "Directory"
+ - value: "FileOrCreate"
+ description: "FileOrCreate"
+ - value: "File"
+ description: "File"
+ - value: "Socket"
+ description: "Socket"
+ - value: "CharDevice"
+ description: "CharDevice"
+ - value: "BlockDevice"
+ description: "BlockDevice"
+ - variable: storageClass
+ label: "(Advanced) storageClass"
+ description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "SCALE-ZFS"
+ - variable: accessMode
+ label: "(Advanced) Access Mode"
+ description: "Allow or disallow multiple PVC's writhing to the same PV"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: advanced
+ label: "Show Advanced Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: logs
+ label: "App logs Storage"
+ description: "Stores the Application logs."
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: "Type of Storage"
+ description: "Sets the persistence type, Anything other than PVC could break rollback!"
+ schema:
+ type: string
+ default: "simplePVC"
+ enum:
+ - value: "simplePVC"
+ description: "PVC (simple)"
+ - value: "simpleHP"
+ description: "HostPath (simple)"
+ - value: "emptyDir"
+ description: "emptyDir"
+ - value: "pvc"
+ description: "pvc"
+ - value: "hostPath"
+ description: "hostPath"
+ - value: "nfs"
+ description: "NFS Share"
+ - variable: server
+ label: "NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: "Path on NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: setPermissionsSimple
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: boolean
+ default: true
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: true
+ - variable: readOnly
+ label: "readOnly"
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPathSimple
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: hostpath
+ - variable: hostPath
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: "EmptyDir Medium"
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "Memory"
+ description: "Memory"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "999Gi"
+ - variable: hostPathType
+ label: "(Advanced) hostPath Type"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "DirectoryOrCreate"
+ description: "DirectoryOrCreate"
+ - value: "Directory"
+ description: "Directory"
+ - value: "FileOrCreate"
+ description: "FileOrCreate"
+ - value: "File"
+ description: "File"
+ - value: "Socket"
+ description: "Socket"
+ - value: "CharDevice"
+ description: "CharDevice"
+ - value: "BlockDevice"
+ description: "BlockDevice"
+ - variable: storageClass
+ label: "(Advanced) storageClass"
+ description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "SCALE-ZFS"
+ - variable: accessMode
+ label: "(Advanced) Access Mode"
+ description: "Allow or disallow multiple PVC's writhing to the same PV"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: advanced
+ label: "Show Advanced Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: persistenceList
+ label: "Additional app storage"
+ group: "Storage and Persistence"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: persistenceListEntry
+ label: "Custom Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: "Name (optional)"
+ description: "Not required, please set to config when mounting /config or temp when mounting /tmp"
+ schema:
+ type: string
+ - variable: type
+ label: "Type of Storage"
+ description: "Sets the persistence type, Anything other than PVC could break rollback!"
+ schema:
+ type: string
+ default: "simpleHP"
+ enum:
+ - value: "simplePVC"
+ description: "PVC (simple)"
+ - value: "simpleHP"
+ description: "HostPath (simple)"
+ - value: "emptyDir"
+ description: "emptyDir"
+ - value: "pvc"
+ description: "pvc"
+ - value: "hostPath"
+ description: "hostPath"
+ - value: "nfs"
+ description: "NFS Share"
+ - variable: server
+ label: "NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: "Path on NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: setPermissionsSimple
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: boolean
+ default: true
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: true
+ - variable: readOnly
+ label: "readOnly"
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPathSimple
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: hostpath
+ - variable: hostPath
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: ""
+ required: true
+ valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$'
+ - variable: medium
+ label: "EmptyDir Medium"
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "Memory"
+ description: "Memory"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "999Gi"
+ - variable: hostPathType
+ label: "(Advanced) hostPath Type"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "DirectoryOrCreate"
+ description: "DirectoryOrCreate"
+ - value: "Directory"
+ description: "Directory"
+ - value: "FileOrCreate"
+ description: "FileOrCreate"
+ - value: "File"
+ description: "File"
+ - value: "Socket"
+ description: "Socket"
+ - value: "CharDevice"
+ description: "CharDevice"
+ - value: "BlockDevice"
+ description: "BlockDevice"
+ - variable: storageClass
+ label: "(Advanced) storageClass"
+ description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "SCALE-ZFS"
+ - variable: accessMode
+ label: "(Advanced) Access Mode"
+ description: "Allow or disallow multiple PVC's writhing to the same PV"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: advanced
+ label: "Show Advanced Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: 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: "pathType"
+ schema:
+ type: string
+ required: true
+ default: "Prefix"
+
+ - variable: tls
+ label: "TLS-Settings"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: tlsEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: "Certificate Hosts"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: scaleCert
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ $ref:
+ - "definitions/certificate"
+
+ - variable: entrypoint
+ label: "(Advanced) Traefik Entrypoint"
+ description: "Entrypoint used by Traefik when using Traefik as Ingress Provider"
+ schema:
+ type: string
+ default: "websecure"
+ required: true
+ - variable: middlewares
+ label: "Traefik Middlewares"
+ description: "Add previously created Traefik Middlewares to this Ingress"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: expert
+ label: "Show Expert Configuration Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: enableFixedMiddlewares
+ description: "These middlewares enforce a number of best practices."
+ label: "Enable Default Middlewares"
+ schema:
+ type: boolean
+ default: true
+ - variable: ingressClassName
+ label: "IngressClass Name"
+ schema:
+ type: string
+ default: ""
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: ingressList
+ label: "Add Manual Custom Ingresses"
+ group: "Ingress"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressListEntry
+ label: "Custom Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Ingress"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ - variable: ingressClassName
+ label: "IngressClass Name"
+ schema:
+ type: string
+ default: ""
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: "HostName"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: "Paths"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: "pathType"
+ schema:
+ type: string
+ required: true
+ default: "Prefix"
+ - variable: service
+ label: "Linked Service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Service Name"
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: "Service Port"
+ schema:
+ type: int
+ - variable: tls
+ label: "TLS-Settings"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: tlsEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: "Certificate Hosts"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: scaleCert
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: entrypoint
+ label: "Traefik Entrypoint"
+ description: "Entrypoint used by Traefik when using Traefik as Ingress Provider"
+ schema:
+ type: string
+ default: "websecure"
+ required: true
+ - variable: middlewares
+ label: "Traefik Middlewares"
+ description: "Add previously created Traefik Middlewares to this Ingress"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: security
+ label: "Container Security Settings"
+ group: "Security and Permissions"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: editsecurity
+ label: "Change PUID / UMASK values"
+ description: "By enabling this you override default set values."
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: PUID
+ label: "Process User ID - PUID"
+ description: "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ label: "UMASK"
+ description: "When supported by the container, this sets the UMASK for tha App. Not supported by all Apps"
+ schema:
+ type: string
+ default: "002"
+
+ - variable: advancedSecurity
+ label: "Show Advanced Security Settings"
+ group: "Security and Permissions"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: securityContext
+ label: "Security Context"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Privileged mode"
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnlyRootFilesystem
+ label: "ReadOnly Root Filesystem"
+ schema:
+ type: boolean
+ default: false
+ - variable: allowPrivilegeEscalation
+ label: "Allow Privilege Escalation"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: capabilities
+ label: "Capabilities"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: drop
+ label: "Drop Capability"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: dropEntry
+ label: ""
+ schema:
+ type: string
+ - variable: add
+ label: "Add Capability"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: addEntry
+ label: ""
+ schema:
+ type: string
+
+ - variable: podSecurityContext
+ group: "Security and Permissions"
+ label: "Pod Security Context"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
+ - variable: supplementalGroups
+ label: "supplemental Groups"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: supplementalGroupsEntry
+ label: "supplemental Group"
+ schema:
+ type: int
+
+
+ - variable: advancedresources
+ label: "Set Custom Resource Limits/Requests (Advanced)"
+ group: "Resources and Devices"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: resources
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limits
+ label: "Advanced Limit Resource Consumption"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: "CPU"
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/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/manual/indepth/validation/"
+ schema:
+ type: string
+ default: "8Gi"
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: requests
+ label: "Minimum Resources Required (request)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: "CPU"
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/"
+ schema:
+ type: string
+ default: "10m"
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: "RAM"
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/"
+ schema:
+ type: string
+ default: "50Mi"
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+
+ - variable: deviceList
+ label: "Mount USB devices"
+ group: "Resources and Devices"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: deviceListEntry
+ label: "Device"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ - variable: type
+ label: "(Advanced) Type of Storage"
+ description: "Sets the persistence type"
+ schema:
+ type: string
+ default: "hostPath"
+ hidden: true
+ - variable: readOnly
+ label: "readOnly"
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: "Host Device Path"
+ description: "Path to the device on the host system"
+ schema:
+ type: path
+ - variable: mountPath
+ label: "Container Device Path"
+ description: "Path inside the container the device is mounted"
+ schema:
+ type: string
+ default: "/dev/ttyACM0"
+
+ # Specify GPU configuration
+ - variable: scaleGPU
+ label: "GPU Configuration"
+ group: "Resources and Devices"
+ schema:
+ type: dict
+ $ref:
+ - "definitions/gpuConfiguration"
+ attrs: []
+
+# - variable: autoscaling
+# group: "Advanced"
+# label: "(Advanced) Horizontal Pod Autoscaler"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: enabled
+# label: "enabled"
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: "Target"
+# description: "deployment name, defaults to main deployment"
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: "Minimum Replicas"
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: "Maximum Replicas"
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: "Target CPU Utilization Percentage"
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: "Target Memory Utilization Percentage"
+# schema:
+# type: int
+# default: 80
+# - variable: networkPolicy
+# group: "Advanced"
+# label: "(Advanced) Network Policy"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: enabled
+# label: "enabled"
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: policyType
+# label: "Policy Type"
+# schema:
+# type: string
+# default: ""
+# enum:
+# - value: ""
+# description: "Default"
+# - value: "ingress"
+# description: "Ingress"
+# - value: "egress"
+# description: "Egress"
+# - value: "ingress-egress"
+# description: "Ingress and Egress"
+# - variable: egress
+# label: "Egress"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: egressEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: to
+# label: "To"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: toEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: ipBlock
+# label: "ipBlock"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: cidr
+# label: "cidr"
+# schema:
+# type: string
+# default: ""
+# - variable: except
+# label: "except"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: exceptint
+# label: ""
+# schema:
+# type: string
+# - variable: namespaceSelector
+# label: "namespaceSelector"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: podSelector
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: ports
+# label: "Ports"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: portsEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: port
+# label: "port"
+# schema:
+# type: int
+# - variable: endPort
+# label: "port"
+# schema:
+# type: 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: "ipBlock"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: cidr
+# label: "cidr"
+# schema:
+# type: string
+# default: ""
+# - variable: except
+# label: "except"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: exceptint
+# label: ""
+# schema:
+# type: string
+# - variable: namespaceSelector
+# label: "namespaceSelector"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: podSelector
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: ports
+# label: "Ports"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: portsEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: port
+# label: "port"
+# schema:
+# type: int
+# - variable: endPort
+# label: "port"
+# schema:
+# type: int
+# - variable: protocol
+# label: "Protocol"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "TCP"
+# description: "TCP"
+# - value: "UDP"
+# description: "UDP"
+# - value: "SCTP"
+# description: "SCTP"
+
+
+ - variable: addons
+ group: "Addons"
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: vpn
+ label: "VPN"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: "Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "disabled"
+ - value: "openvpn"
+ description: "OpenVPN"
+ - value: "wireguard"
+ description: "Wireguard"
+ - variable: openvpn
+ label: "OpenVPN Settings"
+ schema:
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: "authentication username"
+ description: "authentication username, optional"
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: "authentication password"
+ description: "authentication credentials"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - 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 ipv4 addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: "IPv6 Network"
+ schema:
+ type: string
+ required: true
+
+ - variable: configFile
+ label: "VPN Config File Location"
+ schema:
+ type: dict
+ show_if: [["type", "!=", "disabled"]]
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "type"
+ schema:
+ type: string
+ default: "hostPath"
+ hidden: true
+ - variable: hostPathType
+ label: "hostPathType"
+ schema:
+ type: string
+ default: "File"
+ hidden: true
+ - variable: noMount
+ label: "noMount"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: hostPath
+ label: "Full path to file"
+ description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: envList
+ label: "VPN environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
+
+ - variable: codeserver
+ label: "Codeserver"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: git
+ label: "Git Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: deployKey
+ description: "Raw SSH private key"
+ label: "deployKey"
+ schema:
+ type: string
+ - variable: deployKeyBase64
+ description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence"
+ label: "deployKeyBase64"
+ schema:
+ type: string
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: "Service Type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: "NodePort"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - value: "LoadBalancer"
+ description: "LoadBalancer"
+ - variable: loadBalancerIP
+ label: "LoadBalancer IP"
+ description: "LoadBalancerIP"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: "External IP"
+ schema:
+ type: string
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: nodePort
+ description: "leave empty to disable"
+ label: "nodePort"
+ schema:
+ type: int
+ default: 36107
+ - variable: envList
+ label: "Codeserver environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
+
+
+ - variable: promtail
+ label: "Promtail"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: loki
+ label: "Loki URL"
+ schema:
+ type: string
+ required: true
+ - variable: logs
+ label: "Log Paths"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: path
+ label: "Path"
+ schema:
+ type: string
+ required: true
+ - variable: args
+ label: "Promtail ecommand line arguments"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: arg
+ label: "Arg"
+ schema:
+ type: string
+ required: true
+ - variable: envList
+ label: "Promtail environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
+
+
+
+
+ - variable: netshoot
+ label: "Netshoot"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: "Netshoot environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
diff --git a/incubator/lancache-monolithic/0.0.1/templates/common.yaml b/incubator/lancache-monolithic/0.0.1/templates/common.yaml
new file mode 100644
index 00000000000..c1a366e1cf0
--- /dev/null
+++ b/incubator/lancache-monolithic/0.0.1/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "tc.common.loader.all" . }}
diff --git a/incubator/lancache-monolithic/0.0.1/values.yaml b/incubator/lancache-monolithic/0.0.1/values.yaml
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/incubator/lancache-monolithic/item.yaml b/incubator/lancache-monolithic/item.yaml
new file mode 100644
index 00000000000..205d770432b
--- /dev/null
+++ b/incubator/lancache-monolithic/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/appicons/monolithic.png
+categories:
+- gaming
+
diff --git a/incubator/plausible/0.0.1/CHANGELOG.md b/incubator/plausible/0.0.1/CHANGELOG.md
new file mode 100644
index 00000000000..0570674d179
--- /dev/null
+++ b/incubator/plausible/0.0.1/CHANGELOG.md
@@ -0,0 +1,10 @@
+# Changelog
+
+
+
+### plausible-0.0.1 (2022-07-12)
+
+#### Feat
+
+* Add Plausible Analytics ([#3055](https://github.com/truecharts/apps/issues/3055))
+
diff --git a/incubator/plausible/0.0.1/Chart.lock b/incubator/plausible/0.0.1/Chart.lock
new file mode 100644
index 00000000000..3c5ff25ef1e
--- /dev/null
+++ b/incubator/plausible/0.0.1/Chart.lock
@@ -0,0 +1,12 @@
+dependencies:
+- name: common
+ repository: https://library-charts.truecharts.org
+ version: 10.4.4
+- name: postgresql
+ repository: https://charts.truecharts.org/
+ version: 8.0.29
+- name: clickhouse
+ repository: https://charts.truecharts.org/
+ version: 0.0.4
+digest: sha256:7cb330a296c998e42356fa7fff5c21b1cc38a415d0ac090e2136fcd44b60e0db
+generated: "2022-07-12T17:37:37.807733574Z"
diff --git a/incubator/plausible/0.0.1/Chart.yaml b/incubator/plausible/0.0.1/Chart.yaml
new file mode 100644
index 00000000000..58f0bbe1edb
--- /dev/null
+++ b/incubator/plausible/0.0.1/Chart.yaml
@@ -0,0 +1,41 @@
+apiVersion: v2
+appVersion: "1.4.4"
+dependencies:
+ - name: common
+ repository: https://library-charts.truecharts.org
+ version: 10.4.4
+ - condition: postgresql.enabled
+ name: postgresql
+ repository: https://charts.truecharts.org/
+ version: 8.0.29
+ - condition: clickhouse.enabled
+ name: clickhouse
+ repository: https://charts.truecharts.org/
+ version: 0.0.4
+deprecated: false
+description: Plausible is lightweight and open source web analytics. No cookies and fully compliant with GDPR, CCPA and PECR.
+home: https://github.com/truecharts/apps/tree/master/charts/incubator/plausible
+icon: https://truecharts.org/img/appicons/plausible.png
+keywords:
+ - analytics
+ - plausible
+kubeVersion: ">=1.16.0-0"
+maintainers:
+ - email: info@truecharts.org
+ name: TrueCharts
+ url: https://truecharts.org
+name: plausible
+sources:
+ - https://plausible.io/
+ - https://plausible.io/docs/self-hosting
+ - https://github.com/plausible/analytics
+ - https://github.com/plausible/hosting
+ - https://hub.docker.com/r/plausible/analytics
+type: application
+version: 0.0.1
+annotations:
+ truecharts.org/catagories: |
+ - analytics
+ - plausible
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/grade: U
diff --git a/incubator/plausible/0.0.1/README.md b/incubator/plausible/0.0.1/README.md
new file mode 100644
index 00000000000..71be4198970
--- /dev/null
+++ b/incubator/plausible/0.0.1/README.md
@@ -0,0 +1,46 @@
+# plausible
+
+Plausible is lightweight and open source web analytics. No cookies and fully compliant with GDPR, CCPA and PECR.
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://charts.truecharts.org/ | clickhouse | 0.0.4 |
+| https://charts.truecharts.org/ | postgresql | 8.0.29 |
+| https://library-charts.truecharts.org | common | 10.4.4 |
+
+## Installing the Chart
+
+To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/).
+
+## Upgrading, Rolling Back and Uninstalling the Chart
+
+To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/).
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide.
+
+## Support
+
+- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Adding-TrueCharts/) first.
+- See the [Wiki](https://truecharts.org)
+- Check our [Discord](https://discord.gg/tVsPTHWTtr)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+---
+All Rights Reserved - The TrueCharts Project
diff --git a/incubator/plausible/0.0.1/app-readme.md b/incubator/plausible/0.0.1/app-readme.md
new file mode 100644
index 00000000000..69ecb73150f
--- /dev/null
+++ b/incubator/plausible/0.0.1/app-readme.md
@@ -0,0 +1,3 @@
+Plausible is lightweight and open source web analytics. No cookies and fully compliant with GDPR, CCPA and PECR.
+
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
diff --git a/incubator/plausible/0.0.1/charts/clickhouse-0.0.4.tgz b/incubator/plausible/0.0.1/charts/clickhouse-0.0.4.tgz
new file mode 100644
index 00000000000..7d0fb2cf783
Binary files /dev/null and b/incubator/plausible/0.0.1/charts/clickhouse-0.0.4.tgz differ
diff --git a/incubator/plausible/0.0.1/charts/common-10.4.4.tgz b/incubator/plausible/0.0.1/charts/common-10.4.4.tgz
new file mode 100644
index 00000000000..8604b47288a
Binary files /dev/null and b/incubator/plausible/0.0.1/charts/common-10.4.4.tgz differ
diff --git a/incubator/plausible/0.0.1/charts/postgresql-8.0.29.tgz b/incubator/plausible/0.0.1/charts/postgresql-8.0.29.tgz
new file mode 100644
index 00000000000..1eaffad9373
Binary files /dev/null and b/incubator/plausible/0.0.1/charts/postgresql-8.0.29.tgz differ
diff --git a/incubator/plausible/0.0.1/icon.png b/incubator/plausible/0.0.1/icon.png
new file mode 100644
index 00000000000..53c32b1bcf8
Binary files /dev/null and b/incubator/plausible/0.0.1/icon.png differ
diff --git a/incubator/plausible/0.0.1/ix_values.yaml b/incubator/plausible/0.0.1/ix_values.yaml
new file mode 100644
index 00000000000..fbab0af268a
--- /dev/null
+++ b/incubator/plausible/0.0.1/ix_values.yaml
@@ -0,0 +1,113 @@
+image:
+ repository: plausible/analytics
+ pullPolicy: IfNotPresent
+ tag: v1.4.4@sha256:20204bfc253cfab31e1f6c41c321c8a1437bd4a585a3f13393b5e0449b6d8698
+
+# Plausible self-hosting documentation
+# https://plausible.io/docs/self-hosting
+
+plausible:
+ # Server
+ BASE_URL: http://localhost
+ DISABLE_AUTH: false
+ DISABLE_REGISTRATION: false
+
+ # Default User
+ ADMIN_USER_NAME: admin
+ ADMIN_USER_EMAIL: admin@example.com
+ ADMIN_USER_PWD: P@ssw0rd
+
+ # Database
+ CLICKHOUSE_FLUSH_INTERVAL_MS: 5000
+ CLICKHOUSE_MAX_BUFFER_SIZE: 10000
+
+ # Mailer/SMTP Setup
+ MAILER_EMAIL: hello@plausible.local
+ SMTP_HOST_ADDR: localhost
+ SMTP_HOST_PORT: 25
+ SMTP_USER_NAME: ""
+ SMTP_USER_PWD: ""
+ SMTP_HOST_SSL_ENABLED: false
+ SMTP_RETRIES: 2
+ MAILER_ADAPTER: Bamboo.SMTPAdapter
+ POSTMARK_API_KEY: ""
+
+ # Google Search Integration
+ GOOGLE_CLIENT_ID: ""
+ GOOGLE_CLIENT_SECRET: ""
+
+ # Logging
+ LOG_LEVEL: warn
+
+securityContext:
+ readOnlyRootFilesystem: false
+
+podSecurityContext:
+ runAsUser: 1000
+ runAsGroup: 1000
+
+envFrom:
+ - configMapRef:
+ name: '{{ include "tc.common.names.fullname" . }}-env-config'
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-env-secret'
+
+installContainers:
+ plausible-install:
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+ envFrom:
+ - configMapRef:
+ name: '{{ include "tc.common.names.fullname" . }}-env-config'
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-env-secret'
+ command: [sh]
+ args:
+ - -c
+ - >-
+ /entrypoint.sh db createdb &&
+ /entrypoint.sh db migrate &&
+ /entrypoint.sh db init-admin
+
+upgradeContainers:
+ plausible-upgrade:
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+ envFrom:
+ - configMapRef:
+ name: '{{ include "tc.common.names.fullname" . }}-env-config'
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-env-secret'
+ command: [sh]
+ args:
+ - -c
+ - /entrypoint.sh db migrate
+
+service:
+ main:
+ ports:
+ main:
+ targetPort: 8000
+ protocol: HTTP
+ port: 10277
+
+probes:
+ liveness:
+ type: HTTP
+ path: /api/health
+ readiness:
+ type: HTTP
+ path: /api/health
+ startup:
+ type: HTTP
+ path: /api/health
+
+postgresql:
+ enabled: true
+ existingSecret: dbcreds
+ postgresqlUsername: plausible
+ postgresqlDatabase: plausible
+
+clickhouse:
+ enabled: true
+ existingSecret: clickhousecreds
+ clickhouseUsername: plausible
+ clickhouseDatabase: plausible
diff --git a/incubator/plausible/0.0.1/questions.yaml b/incubator/plausible/0.0.1/questions.yaml
new file mode 100644
index 00000000000..5972547c5a5
--- /dev/null
+++ b/incubator/plausible/0.0.1/questions.yaml
@@ -0,0 +1,2407 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Controller"
+ description: "Configure workload deployment"
+ - name: "Container Configuration"
+ description: "additional container configuration"
+ - name: "App Configuration"
+ description: "App specific config options"
+ - name: "Networking and Services"
+ description: "Configure Network and Services for container"
+ - name: "Storage and Persistence"
+ description: "Persist and share data that is separate from the container"
+ - name: "Ingress"
+ description: "Ingress Configuration"
+ - name: "Security and Permissions"
+ description: "Configure security context and permissions"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Middlewares"
+ description: "Traefik Middlewares"
+ - name: "Metrics"
+ description: "Metrics"
+ - name: "Addons"
+ description: "Addon Configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+portals:
+ open:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+ - variable: global
+ label: "global settings"
+ group: "Controller"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: isSCALE
+ label: "flag this is SCALE"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+
+ - variable: controller
+ group: "Controller"
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: advanced
+ label: "Show Advanced Controller Settings"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: type
+ description: "Please specify type of workload to deploy"
+ label: "(Advanced) Controller Type"
+ schema:
+ type: string
+ default: "deployment"
+ required: true
+ enum:
+ - value: "deployment"
+ description: "Deployment"
+ - value: "statefulset"
+ description: "Statefulset"
+ - value: "daemonset"
+ description: "Daemonset"
+ - variable: replicas
+ description: "Number of desired pod replicas"
+ label: "Desired Replicas"
+ schema:
+ type: int
+ default: 1
+ required: true
+ - variable: strategy
+ description: "Please specify type of workload to deploy"
+ label: "(Advanced) Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ required: true
+ enum:
+ - value: "Recreate"
+ description: "Recreate: Kill existing pods before creating new ones"
+ - value: "RollingUpdate"
+ description: "RollingUpdate: Create new pods and then kill old ones"
+ - value: "OnDelete"
+ description: "(Legacy) OnDelete: ignore .spec.template changes"
+ - variable: expert
+ label: "Show Expert Configuration Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: extraArgs
+ label: "Extra Args"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: arg
+ label: "arg"
+ schema:
+ type: string
+ - variable: labelsList
+ label: "Controller Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: " Controller Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: plausible
+ group: "Container Configuration"
+ label: "Plausible Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: BASE_URL
+ label: BASE_URL
+ description: The hosting URL of the server, used for URL generation. In production systems, this should be your ingress host.
+ schema:
+ type: string
+ default: http://localhost
+ required: true
+ - variable: DISABLE_AUTH
+ label: DISABLE_AUTH
+ description: Disables authentication completely, no registration, login will be shown.
+ schema:
+ type: boolean
+ default: false
+ - variable: DISABLE_REGISTRATION
+ label: DISABLE_REGISTRATION
+ description: Disables registration of new users, keep your admin credentials handy ;)
+ schema:
+ type: boolean
+ default: false
+ - variable: ADMIN_USER_NAME
+ label: ADMIN_USER_NAME
+ description: Admin user's name (First Install Only)
+ schema:
+ type: string
+ default: admin
+ required: true
+ - variable: ADMIN_USER_EMAIL
+ label: ADMIN_USER_EMAIL
+ description: The default ("admin") user email (First Install Only)
+ schema:
+ type: string
+ default: admin@example.com
+ required: true
+ - variable: ADMIN_USER_PWD
+ label: ADMIN_USER_PWD
+ description: The default ("admin") user password (First Install Only)
+ schema:
+ type: string
+ default: ""
+ required: true
+ private: true
+ - variable: CLICKHOUSE_FLUSH_INTERVAL_MS
+ label: CLICKHOUSE_FLUSH_INTERVAL_MS
+ description: nterval (in milliseconds) between flushing events and sessions data to Clickhouse. Consult Clickhouse docs before changing it.
+ schema:
+ type: int
+ default: 5000
+ required: true
+ - variable: CLICKHOUSE_MAX_BUFFER_SIZE
+ label: CLICKHOUSE_MAX_BUFFER_SIZE
+ description: Maximum size of the buffer of events or sessions. Consult Clickhouse docs before changing it.
+ schema:
+ type: int
+ default: 10000
+ required: true
+ - variable: MAILER_EMAIL
+ label: MAILER_EMAIL
+ description: The email id to use for as from address of all communications from Plausible.
+ schema:
+ type: string
+ default: hello@plausible.local
+ required: true
+ - variable: SMTP_HOST_ADDR
+ label: SMTP_HOST_ADDR
+ description: The host address of your smtp server.
+ schema:
+ type: string
+ default: localhost
+ required: true
+ - variable: SMTP_HOST_PORT
+ label: SMTP_HOST_PORT
+ description: The port of your smtp server.
+ schema:
+ type: int
+ default: 25
+ required: true
+ - variable: SMTP_USER_NAME
+ label: SMTP_USER_NAME
+ description: The username/email in case SMTP auth is enabled.
+ schema:
+ type: string
+ default: ""
+ - variable: SMTP_USER_PWD
+ label: SMTP_USER_PWD
+ description: The password in case SMTP auth is enabled.
+ schema:
+ type: string
+ default: ""
+ private: true
+ - variable: SMTP_HOST_SSL_ENABLED
+ label: SMTP_HOST_SSL_ENABLED
+ description: If SSL is enabled for SMTP connection
+ schema:
+ type: boolean
+ default: false
+ - variable: SMTP_RETRIES
+ label: SMTP_RETRIES
+ description: Number of retries to make until mailer gives up.
+ schema:
+ type: int
+ default: 2
+ required: true
+ - variable: MAILER_ADAPTER
+ label: MAILER_ADAPTER
+ description: Mailer Adapter
+ schema:
+ type: string
+ required: true
+ default: Bamboo.SMTPAdapter
+ enum:
+ - value: Bamboo.SMTPAdapter
+ description: Bamboo.SMTPAdapter
+ - value: Bamboo.PostmarkAdapter
+ description: Bamboo.PostmarkAdapter
+ - variable: POSTMARK_API_KEY
+ label: POSTMARK_API_KEY
+ description: Enter your API key.
+ schema:
+ type: string
+ default: ""
+ private: true
+ - variable: GOOGLE_CLIENT_ID
+ label: GOOGLE_CLIENT_ID
+ description: The Client ID from the Google API Console for your Plausible Analytics project
+ schema:
+ type: string
+ default: ""
+ - variable: GOOGLE_CLIENT_SECRET
+ label: GOOGLE_CLIENT_SECRET
+ description: The Client Secret from the Google API Console for your Plausible Analytics project
+ schema:
+ type: string
+ default: ""
+ private: true
+ - variable: LOG_LEVEL
+ label: LOG_LEVEL
+ description: Logging Level
+ schema:
+ type: string
+ required: true
+ default: warn
+ enum:
+ - value: debug
+ description: debug
+ - value: info
+ description: info
+ - value: warn
+ description: warn
+ - value: error
+ description: error
+
+ - variable: TZ
+ label: "Timezone"
+ group: "Container Configuration"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ - variable: envList
+ label: "Image environment"
+ group: "Container Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: expertpodconf
+ group: "Container Configuration"
+ label: "Show Expert Config"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: tty
+ label: "Enable TTY"
+ description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled."
+ group: "Workload Details"
+ schema:
+ type: boolean
+ default: false
+ - variable: stdin
+ label: "Enable STDIN"
+ description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled."
+ group: "Workload Details"
+ schema:
+ type: boolean
+ default: false
+ - variable: termination
+ group: "Container Configuration"
+ label: "Termination settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: gracePeriodSeconds
+ label: "Grace Period Seconds"
+ schema:
+ type: int
+ default: 10
+ - variable: podLabelsList
+ group: "Container Configuration"
+ label: "Pod Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: podLabelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: podAnnotationsList
+ group: "Container Configuration"
+ label: "Pod Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: podAnnotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: "Simple"
+ enum:
+ - value: "Simple"
+ description: "Simple"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - value: "NodePort"
+ description: "NodePort (Advanced)"
+ - value: "LoadBalancer"
+ description: "LoadBalancer (Advanced)"
+ - variable: loadBalancerIP
+ label: "LoadBalancer IP"
+ description: "LoadBalancerIP"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: "External IP"
+ schema:
+ type: string
+ - variable: ipFamilyPolicy
+ label: "IP Family Policy"
+ description: "(Advanced) Specify the ip policy"
+ schema:
+ show_if: [["type", "!=", "Simple"]]
+ type: string
+ default: "SingleStack"
+ enum:
+ - value: "SingleStack"
+ description: "SingleStack"
+ - value: "PreferDualStack"
+ description: "PreferDualStack"
+ - value: "RequireDualStack"
+ description: "RequireDualStack"
+ - variable: ipFamilies
+ label: "(advanced) IP families"
+ description: "(advanced) The ip families that should be used"
+ schema:
+ show_if: [["type", "!=", "Simple"]]
+ type: list
+ default: []
+ items:
+ - variable: ipFamily
+ label: "IP family"
+ schema:
+ type: string
+ - variable: ports
+ label: "Service's Port(s) Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Service Port Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: "Port"
+ description: "This port exposes the container port on the service"
+ schema:
+ type: int
+ default: 10277
+ required: true
+ - variable: advanced
+ label: "Show Advanced settings"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - value: TCP
+ description: "TCP"
+ - value: "UDP"
+ description: "UDP"
+ - variable: nodePort
+ label: "Node Port (Optional)"
+ description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ - variable: targetPort
+ label: "Target Port"
+ description: "The internal(!) port on the container the Application runs on"
+ schema:
+ type: int
+ default: 8000
+
+ - variable: serviceexpert
+ group: "Networking and Services"
+ label: "Show Expert Config"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hostNetwork
+ group: "Networking and Services"
+ label: "Host-Networking (Complicated)"
+ schema:
+ type: boolean
+ default: false
+
+ - variable: externalInterfaces
+ description: "Add External Interfaces"
+ label: "Add external Interfaces"
+ group: "Networking"
+ schema:
+ type: list
+ items:
+ - variable: interfaceConfiguration
+ description: "Interface Configuration"
+ label: "Interface Configuration"
+ schema:
+ type: dict
+ $ref:
+ - "normalize/interfaceConfiguration"
+ attrs:
+ - variable: hostInterface
+ description: "Please specify host interface"
+ label: "Host Interface"
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/interface"
+ - variable: ipam
+ description: "Define how IP Address will be managed"
+ label: "IP Address Management"
+ schema:
+ type: dict
+ required: true
+ attrs:
+ - variable: type
+ description: "Specify type for IPAM"
+ label: "IPAM Type"
+ schema:
+ type: string
+ required: true
+ enum:
+ - value: "dhcp"
+ description: "Use DHCP"
+ - value: "static"
+ description: "Use static IP"
+ show_subquestions_if: "static"
+ subquestions:
+ - variable: staticIPConfigurations
+ label: "Static IP Addresses"
+ schema:
+ type: list
+ items:
+ - variable: staticIP
+ label: "Static IP"
+ schema:
+ type: ipaddr
+ cidr: true
+ - variable: staticRoutes
+ label: "Static Routes"
+ schema:
+ type: list
+ items:
+ - variable: staticRouteConfiguration
+ label: "Static Route Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: destination
+ label: "Destination"
+ schema:
+ type: ipaddr
+ cidr: true
+ required: true
+ - variable: gateway
+ label: "Gateway"
+ schema:
+ type: ipaddr
+ cidr: false
+ required: true
+
+ - variable: dnsPolicy
+ group: "Networking and Services"
+ label: "dnsPolicy"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "ClusterFirst"
+ description: "ClusterFirst"
+ - value: "ClusterFirstWithHostNet"
+ description: "ClusterFirstWithHostNet"
+ - value: "None"
+ description: "None"
+
+ - variable: dnsConfig
+ label: "DNS Configuration"
+ group: "Networking and Services"
+ description: "Specify custom DNS configuration which will be applied to the pod"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: nameservers
+ label: "Nameservers"
+ schema:
+ default: []
+ type: list
+ items:
+ - variable: nameserver
+ label: "Nameserver"
+ schema:
+ type: string
+ - variable: options
+ label: "options"
+ schema:
+ default: []
+ type: list
+ items:
+ - variable: option
+ label: "Option Entry"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: searches
+ label: "Searches"
+ schema:
+ default: []
+ type: list
+ items:
+ - variable: search
+ label: "Search Entry"
+ schema:
+ type: string
+
+ - variable: serviceList
+ label: "Add Manual Custom Services"
+ group: "Networking and Services"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: serviceListEntry
+ label: "Custom Service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ - variable: type
+ label: "Service Type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: "Simple"
+ enum:
+ - value: "Simple"
+ description: "Simple"
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - value: "LoadBalancer"
+ description: "LoadBalancer"
+ - variable: loadBalancerIP
+ label: "LoadBalancer IP"
+ description: "LoadBalancerIP"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: "External IP"
+ 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: nodePort
+ label: "Node Port (Optional)"
+ description: "This port gets exposed to the node. Only considered when service type is NodePort"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+
+ - variable: persistenceList
+ label: "Additional app storage"
+ group: "Storage and Persistence"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: persistenceListEntry
+ label: "Custom Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: "Name (optional)"
+ description: "Not required, please set to config when mounting /config or temp when mounting /tmp"
+ schema:
+ type: string
+ - variable: type
+ label: "Type of Storage"
+ description: "Sets the persistence type, Anything other than PVC could break rollback!"
+ schema:
+ type: string
+ default: "simpleHP"
+ enum:
+ - value: "simplePVC"
+ description: "PVC (simple)"
+ - value: "simpleHP"
+ description: "HostPath (simple)"
+ - value: "emptyDir"
+ description: "emptyDir"
+ - value: "pvc"
+ description: "pvc"
+ - value: "hostPath"
+ description: "hostPath"
+ - value: "nfs"
+ description: "NFS Share"
+ - variable: server
+ label: "NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: "Path on NFS server"
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: setPermissionsSimple
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: boolean
+ default: true
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: true
+ - variable: readOnly
+ label: "readOnly"
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPathSimple
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "simpleHP"]]
+ type: hostpath
+ - variable: hostPath
+ label: "hostPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: ""
+ required: true
+ valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$'
+ - variable: medium
+ label: "EmptyDir Medium"
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "Memory"
+ description: "Memory"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "999Gi"
+ - variable: hostPathType
+ label: "(Advanced) hostPath Type"
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Default"
+ - value: "DirectoryOrCreate"
+ description: "DirectoryOrCreate"
+ - value: "Directory"
+ description: "Directory"
+ - value: "FileOrCreate"
+ description: "FileOrCreate"
+ - value: "File"
+ description: "File"
+ - value: "Socket"
+ description: "Socket"
+ - value: "CharDevice"
+ description: "CharDevice"
+ - value: "BlockDevice"
+ description: "BlockDevice"
+ - variable: storageClass
+ label: "(Advanced) storageClass"
+ description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "SCALE-ZFS"
+ - variable: accessMode
+ label: "(Advanced) Access Mode"
+ description: "Allow or disallow multiple PVC's writhing to the same PV"
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: advanced
+ label: "Show Advanced Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: 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: "pathType"
+ schema:
+ type: string
+ required: true
+ default: "Prefix"
+
+ - variable: tls
+ label: "TLS-Settings"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: tlsEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: "Certificate Hosts"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: scaleCert
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ $ref:
+ - "definitions/certificate"
+
+ - variable: entrypoint
+ label: "(Advanced) Traefik Entrypoint"
+ description: "Entrypoint used by Traefik when using Traefik as Ingress Provider"
+ schema:
+ type: string
+ default: "websecure"
+ required: true
+ - variable: middlewares
+ label: "Traefik Middlewares"
+ description: "Add previously created Traefik Middlewares to this Ingress"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: expert
+ label: "Show Expert Configuration Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: enableFixedMiddlewares
+ description: "These middlewares enforce a number of best practices."
+ label: "Enable Default Middlewares"
+ schema:
+ type: boolean
+ default: true
+ - variable: ingressClassName
+ label: "IngressClass Name"
+ schema:
+ type: string
+ default: ""
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ - variable: ingressList
+ label: "Add Manual Custom Ingresses"
+ group: "Ingress"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressListEntry
+ label: "Custom Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable Ingress"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ - variable: ingressClassName
+ label: "IngressClass Name"
+ schema:
+ type: string
+ default: ""
+ - variable: labelsList
+ label: "Labels"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: labelItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: annotationsList
+ label: "Annotations"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: annotationItem
+ label: "Label"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: "HostName"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: "Paths"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: "pathType"
+ schema:
+ type: string
+ required: true
+ default: "Prefix"
+ - variable: service
+ label: "Linked Service"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Service Name"
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: "Service Port"
+ schema:
+ type: int
+ - variable: tls
+ label: "TLS-Settings"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: tlsEntry
+ label: "Host"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: "Certificate Hosts"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: scaleCert
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: entrypoint
+ label: "Traefik Entrypoint"
+ description: "Entrypoint used by Traefik when using Traefik as Ingress Provider"
+ schema:
+ type: string
+ default: "websecure"
+ required: true
+ - variable: middlewares
+ label: "Traefik Middlewares"
+ description: "Add previously created Traefik Middlewares to this Ingress"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: security
+ label: "Container Security Settings"
+ group: "Security and Permissions"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: editsecurity
+ label: "Change PUID / UMASK values"
+ description: "By enabling this you override default set values."
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: PUID
+ label: "Process User ID - PUID"
+ description: "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ label: "UMASK"
+ description: "When supported by the container, this sets the UMASK for tha App. Not supported by all Apps"
+ schema:
+ type: string
+ default: "002"
+
+ - variable: advancedSecurity
+ label: "Show Advanced Security Settings"
+ group: "Security and Permissions"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: securityContext
+ label: "Security Context"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Privileged mode"
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnlyRootFilesystem
+ label: "ReadOnly Root Filesystem"
+ schema:
+ type: boolean
+ default: false
+ - variable: allowPrivilegeEscalation
+ label: "Allow Privilege Escalation"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: capabilities
+ label: "Capabilities"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: drop
+ label: "Drop Capability"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: dropEntry
+ label: ""
+ schema:
+ type: string
+ - variable: add
+ label: "Add Capability"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: addEntry
+ label: ""
+ schema:
+ type: string
+
+ - variable: podSecurityContext
+ group: "Security and Permissions"
+ label: "Pod Security Context"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: "The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 1000
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
+ - variable: supplementalGroups
+ label: "supplemental Groups"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: supplementalGroupsEntry
+ label: "supplemental Group"
+ schema:
+ type: int
+
+
+ - variable: advancedresources
+ label: "Set Custom Resource Limits/Requests (Advanced)"
+ group: "Resources and Devices"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: resources
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limits
+ label: "Advanced Limit Resource Consumption"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: "CPU"
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/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/manual/indepth/validation/"
+ schema:
+ type: string
+ default: "8Gi"
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: requests
+ label: "Minimum Resources Required (request)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: "CPU"
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/"
+ schema:
+ type: string
+ default: "10m"
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: "RAM"
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/"
+ schema:
+ type: string
+ default: "50Mi"
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+
+ - variable: deviceList
+ label: "Mount USB devices"
+ group: "Resources and Devices"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: deviceListEntry
+ label: "Device"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ - variable: type
+ label: "(Advanced) Type of Storage"
+ description: "Sets the persistence type"
+ schema:
+ type: string
+ default: "hostPath"
+ hidden: true
+ - variable: readOnly
+ label: "readOnly"
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: "Host Device Path"
+ description: "Path to the device on the host system"
+ schema:
+ type: path
+ - variable: mountPath
+ label: "Container Device Path"
+ description: "Path inside the container the device is mounted"
+ schema:
+ type: string
+ default: "/dev/ttyACM0"
+
+ # Specify GPU configuration
+ - variable: scaleGPU
+ label: "GPU Configuration"
+ group: "Resources and Devices"
+ schema:
+ type: dict
+ $ref:
+ - "definitions/gpuConfiguration"
+ attrs: []
+
+# - variable: autoscaling
+# group: "Advanced"
+# label: "(Advanced) Horizontal Pod Autoscaler"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: enabled
+# label: "enabled"
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: "Target"
+# description: "deployment name, defaults to main deployment"
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: "Minimum Replicas"
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: "Maximum Replicas"
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: "Target CPU Utilization Percentage"
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: "Target Memory Utilization Percentage"
+# schema:
+# type: int
+# default: 80
+# - variable: networkPolicy
+# group: "Advanced"
+# label: "(Advanced) Network Policy"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: enabled
+# label: "enabled"
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: policyType
+# label: "Policy Type"
+# schema:
+# type: string
+# default: ""
+# enum:
+# - value: ""
+# description: "Default"
+# - value: "ingress"
+# description: "Ingress"
+# - value: "egress"
+# description: "Egress"
+# - value: "ingress-egress"
+# description: "Ingress and Egress"
+# - variable: egress
+# label: "Egress"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: egressEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: to
+# label: "To"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: toEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: ipBlock
+# label: "ipBlock"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: cidr
+# label: "cidr"
+# schema:
+# type: string
+# default: ""
+# - variable: except
+# label: "except"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: exceptint
+# label: ""
+# schema:
+# type: string
+# - variable: namespaceSelector
+# label: "namespaceSelector"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: podSelector
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: ports
+# label: "Ports"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: portsEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: port
+# label: "port"
+# schema:
+# type: int
+# - variable: endPort
+# label: "port"
+# schema:
+# type: 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: "ipBlock"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: cidr
+# label: "cidr"
+# schema:
+# type: string
+# default: ""
+# - variable: except
+# label: "except"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: exceptint
+# label: ""
+# schema:
+# type: string
+# - variable: namespaceSelector
+# label: "namespaceSelector"
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: podSelector
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: matchExpressions
+# label: "matchExpressions"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: expressionEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: key
+# label: "Key"
+# schema:
+# type: string
+# - variable: operator
+# label: "operator"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "In"
+# description: "In"
+# - value: "NotIn"
+# description: "NotIn"
+# - value: "Exists "
+# description: "Exists "
+# - value: "DoesNotExist "
+# description: "DoesNotExist "
+# - variable: values
+# label: "values"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: value
+# label: ""
+# schema:
+# type: string
+# - variable: ports
+# label: "Ports"
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: portsEntry
+# label: ""
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: port
+# label: "port"
+# schema:
+# type: int
+# - variable: endPort
+# label: "port"
+# schema:
+# type: int
+# - variable: protocol
+# label: "Protocol"
+# schema:
+# type: string
+# default: "TCP"
+# enum:
+# - value: "TCP"
+# description: "TCP"
+# - value: "UDP"
+# description: "UDP"
+# - value: "SCTP"
+# description: "SCTP"
+
+
+ - variable: addons
+ group: "Addons"
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: vpn
+ label: "VPN"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: "Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "disabled"
+ - value: "openvpn"
+ description: "OpenVPN"
+ - value: "wireguard"
+ description: "Wireguard"
+ - variable: openvpn
+ label: "OpenVPN Settings"
+ schema:
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: "authentication username"
+ description: "authentication username, optional"
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: "authentication password"
+ description: "authentication credentials"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - 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 ipv4 addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: "IPv6 Network"
+ schema:
+ type: string
+ required: true
+
+ - variable: configFile
+ label: "VPN Config File Location"
+ schema:
+ type: dict
+ show_if: [["type", "!=", "disabled"]]
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "type"
+ schema:
+ type: string
+ default: "hostPath"
+ hidden: true
+ - variable: hostPathType
+ label: "hostPathType"
+ schema:
+ type: string
+ default: "File"
+ hidden: true
+ - variable: noMount
+ label: "noMount"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: hostPath
+ label: "Full path to file"
+ description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: envList
+ label: "VPN environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
+
+ - variable: codeserver
+ label: "Codeserver"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: git
+ label: "Git Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: deployKey
+ description: "Raw SSH private key"
+ label: "deployKey"
+ schema:
+ type: string
+ - variable: deployKeyBase64
+ description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence"
+ label: "deployKeyBase64"
+ schema:
+ type: string
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: "Service Type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: "NodePort"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - value: "LoadBalancer"
+ description: "LoadBalancer"
+ - variable: loadBalancerIP
+ label: "LoadBalancer IP"
+ description: "LoadBalancerIP"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: "External IP"
+ schema:
+ type: string
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: nodePort
+ description: "leave empty to disable"
+ label: "nodePort"
+ schema:
+ type: int
+ default: 36107
+ - variable: envList
+ label: "Codeserver environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
+
+
+ - variable: promtail
+ label: "Promtail"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: loki
+ label: "Loki URL"
+ schema:
+ type: string
+ required: true
+ - variable: logs
+ label: "Log Paths"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: path
+ label: "Path"
+ schema:
+ type: string
+ required: true
+ - variable: args
+ label: "Promtail ecommand line arguments"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: arg
+ label: "Arg"
+ schema:
+ type: string
+ required: true
+ - variable: envList
+ label: "Promtail environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
+
+
+
+
+ - variable: netshoot
+ label: "Netshoot"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: "Netshoot environment Variables"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: "Environment Variable"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ required: true
diff --git a/incubator/plausible/0.0.1/templates/_env.tpl b/incubator/plausible/0.0.1/templates/_env.tpl
new file mode 100644
index 00000000000..a8fe6ae1c44
--- /dev/null
+++ b/incubator/plausible/0.0.1/templates/_env.tpl
@@ -0,0 +1,56 @@
+{{/* Plausible environment variables */}}
+{{- define "plausible.env" -}}
+{{- $configName := printf "%s-env-config" (include "tc.common.names.fullname" .) }}
+{{- $secretName := printf "%s-env-secret" (include "tc.common.names.fullname" .) }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: {{ $configName }}
+ labels:
+ {{- include "tc.common.labels" . | nindent 4 }}
+data:
+ BASE_URL: {{ .Values.plausible.BASE_URL | quote }}
+ DISABLE_AUTH: {{ .Values.plausible.DISABLE_AUTH | quote }}
+ DISABLE_REGISTRATION: {{ .Values.plausible.DISABLE_REGISTRATION | quote }}
+
+ CLICKHOUSE_FLUSH_INTERVAL_MS: {{ .Values.plausible.CLICKHOUSE_FLUSH_INTERVAL_MS | quote }}
+ CLICKHOUSE_MAX_BUFFER_SIZE: {{ .Values.plausible.CLICKHOUSE_MAX_BUFFER_SIZE | quote }}
+
+ SMTP_HOST_ADDR: {{ .Values.plausible.SMTP_HOST_ADDR | quote }}
+ SMTP_HOST_PORT: {{ .Values.plausible.SMTP_HOST_PORT | quote }}
+ SMTP_HOST_SSL_ENABLED: {{ .Values.plausible.SMTP_HOST_SSL_ENABLED | quote }}
+ SMTP_RETRIES: {{ .Values.plausible.SMTP_RETRIES | quote }}
+ MAILER_ADAPTER: {{ .Values.plausible.MAILER_ADAPTER | quote }}
+
+ LOG_LEVEL: {{ .Values.plausible.LOG_LEVEL | quote }}
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: {{ $secretName }}
+ labels:
+ {{- include "tc.common.labels" . | nindent 4 }}
+stringData:
+ {{- with (lookup "v1" "Secret" .Release.Namespace $secretName) }}
+ SECRET_KEY_BASE: {{ index .data "SECRET_KEY_BASE" | b64dec }}
+ {{- else }}
+ {{- /* The plain value of SECRET_KEY_BASE is also base64 encoded */}}
+ SECRET_KEY_BASE: {{ randAlphaNum 65 | b64enc }}
+ {{- end }}
+
+ ADMIN_USER_NAME: {{ .Values.plausible.ADMIN_USER_NAME | quote }}
+ ADMIN_USER_EMAIL: {{ .Values.plausible.ADMIN_USER_EMAIL | quote }}
+ ADMIN_USER_PWD: {{ .Values.plausible.ADMIN_USER_PWD | quote }}
+
+ DATABASE_URL: {{ get .Values.postgresql.url "complete-noql" }}
+ CLICKHOUSE_DATABASE_URL: {{ .Values.clickhouse.url.complete }}
+
+ MAILER_EMAIL: {{ .Values.plausible.MAILER_EMAIL | quote }}
+ SMTP_USER_NAME: {{ .Values.plausible.SMTP_USER_NAME | quote }}
+ SMTP_USER_PWD: {{ .Values.plausible.SMTP_USER_PWD | quote }}
+ POSTMARK_API_KEY: {{ .Values.plausible.POSTMARK_API_KEY | quote }}
+
+ GOOGLE_CLIENT_ID: {{ .Values.plausible.GOOGLE_CLIENT_ID | quote }}
+ GOOGLE_CLIENT_SECRET: {{ .Values.plausible.GOOGLE_CLIENT_SECRET | quote }}
+{{- end }}
diff --git a/incubator/plausible/0.0.1/templates/common.yaml b/incubator/plausible/0.0.1/templates/common.yaml
new file mode 100644
index 00000000000..21d4eeef645
--- /dev/null
+++ b/incubator/plausible/0.0.1/templates/common.yaml
@@ -0,0 +1,8 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.common.loader.init" . }}
+
+{{/* Plausible environment variables */}}
+{{- include "plausible.env" . }}
+
+{{/* Render the templates */}}
+{{ include "tc.common.loader.apply" . }}
diff --git a/incubator/plausible/0.0.1/values.yaml b/incubator/plausible/0.0.1/values.yaml
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/incubator/plausible/item.yaml b/incubator/plausible/item.yaml
new file mode 100644
index 00000000000..76bee29423e
--- /dev/null
+++ b/incubator/plausible/item.yaml
@@ -0,0 +1,5 @@
+icon_url: https://truecharts.org/img/appicons/plausible.png
+categories:
+- analytics
+- plausible
+