diff --git a/incubator/penpot/0.0.1/CHANGELOG.md b/incubator/penpot/0.0.1/CHANGELOG.md
new file mode 100644
index 0000000000..6f0162420b
--- /dev/null
+++ b/incubator/penpot/0.0.1/CHANGELOG.md
@@ -0,0 +1,13 @@
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+
+## [penpot-0.0.1]penpot-0.0.1 (2022-12-24)
+
+### Feat
+
+- add Penpot ([#4785](https://github.com/truecharts/charts/issues/4785))
+
+
\ No newline at end of file
diff --git a/incubator/penpot/0.0.1/Chart.yaml b/incubator/penpot/0.0.1/Chart.yaml
new file mode 100644
index 0000000000..35087dc075
--- /dev/null
+++ b/incubator/penpot/0.0.1/Chart.yaml
@@ -0,0 +1,40 @@
+apiVersion: v2
+appVersion: "latest"
+dependencies:
+ - name: common
+ repository: https://library-charts.truecharts.org
+ version: 11.0.9
+ - condition: postgresql.enabled
+ name: postgresql
+ repository: https://charts.truecharts.org/
+ version: 11.0.13
+ - condition: redis.enabled
+ name: redis
+ repository: https://charts.truecharts.org
+ version: 5.0.17
+deprecated: false
+description: Open Source design and prototyping platform.
+home: https://truecharts.org/docs/charts/incubator/penpot
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/penpot.png
+keywords:
+ - penpot
+ - media
+ - design
+kubeVersion: ">=1.16.0-0"
+maintainers:
+ - email: info@truecharts.org
+ name: TrueCharts
+ url: https://truecharts.org
+name: penpot
+sources:
+ - https://github.com/truecharts/charts/tree/master/charts/incubator/penpot
+ - https://github.com/penpot/penpot
+ - https://hub.docker.com/r/penpotapp/frontend
+ - https://hub.docker.com/r/penpotapp/backend
+type: application
+version: 0.0.1
+annotations:
+ truecharts.org/catagories: |
+ - media
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/grade: U
diff --git a/incubator/penpot/0.0.1/README.md b/incubator/penpot/0.0.1/README.md
new file mode 100644
index 0000000000..ce6d346e1d
--- /dev/null
+++ b/incubator/penpot/0.0.1/README.md
@@ -0,0 +1 @@
+# penpot
diff --git a/incubator/penpot/0.0.1/app-changelog.md b/incubator/penpot/0.0.1/app-changelog.md
new file mode 100644
index 0000000000..bbaf6ea6ad
--- /dev/null
+++ b/incubator/penpot/0.0.1/app-changelog.md
@@ -0,0 +1,9 @@
+
+
+## [penpot-0.0.1]penpot-0.0.1 (2022-12-24)
+
+### Feat
+
+- add Penpot ([#4785](https://github.com/truecharts/charts/issues/4785))
+
+
\ No newline at end of file
diff --git a/incubator/penpot/0.0.1/app-readme.md b/incubator/penpot/0.0.1/app-readme.md
new file mode 100644
index 0000000000..e075c1c3dd
--- /dev/null
+++ b/incubator/penpot/0.0.1/app-readme.md
@@ -0,0 +1,8 @@
+Open Source design and prototyping platform.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/incubator/penpot](https://truecharts.org/docs/charts/incubator/penpot)
+
+---
+
+TrueCharts can only exist due to the incredible effort of our staff.
+Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can!
diff --git a/incubator/penpot/0.0.1/charts/common-11.0.9.tgz b/incubator/penpot/0.0.1/charts/common-11.0.9.tgz
new file mode 100644
index 0000000000..f8a1b1cf13
Binary files /dev/null and b/incubator/penpot/0.0.1/charts/common-11.0.9.tgz differ
diff --git a/incubator/penpot/0.0.1/charts/postgresql-11.0.13.tgz b/incubator/penpot/0.0.1/charts/postgresql-11.0.13.tgz
new file mode 100644
index 0000000000..90b1dfb717
Binary files /dev/null and b/incubator/penpot/0.0.1/charts/postgresql-11.0.13.tgz differ
diff --git a/incubator/penpot/0.0.1/charts/redis-5.0.17.tgz b/incubator/penpot/0.0.1/charts/redis-5.0.17.tgz
new file mode 100644
index 0000000000..07d178eeeb
Binary files /dev/null and b/incubator/penpot/0.0.1/charts/redis-5.0.17.tgz differ
diff --git a/incubator/penpot/0.0.1/ix_values.yaml b/incubator/penpot/0.0.1/ix_values.yaml
new file mode 100644
index 0000000000..1bab50f5d4
--- /dev/null
+++ b/incubator/penpot/0.0.1/ix_values.yaml
@@ -0,0 +1,128 @@
+# TODO: Update images
+image:
+ repository: penpotapp/frontend
+ pullPolicy: IfNotPresent
+ tag: latest@sha256:0cf7ce270c8e3fc18459165567549b8c578a7f37c257785efd21d15189fb10ae
+
+backendImage:
+ repository: penpotapp/backend
+ pullPolicy: IfNotPresent
+ tag: latest@sha256:e1485e99dd7b587155cf577408bab8fb85daf7b1bb0586958acc19ed5422b869
+
+exporterImage:
+ repository: penpotapp/exporter
+ pullPolicy: IfNotPresent
+ tag: latest@sha256:e5c8d7b78feae9997a11bf6b7281aa19907a799c97d76b8d46e0caa7a349fc3f
+
+securityContext:
+ runAsNonRoot: false
+ readOnlyRootFilesystem: false
+
+podSecurityContext:
+ runAsUser: 0
+ runAsGroup: 0
+
+hostAliases:
+ - ip: 127.0.0.1
+ hostnames:
+ - penpot-backend
+ - penpot-exporter
+ - penpot-frontend
+
+penpot:
+ public_uri: "http://localhost:{{ .Values.service.main.ports.main.port }}"
+ flags:
+ - enable-registration
+ - enable-login
+ - disable-email-verification
+ telemetry_enabled: false
+ registration_domain_whitelist: []
+ smtp:
+ enabled: false
+ default_from: "no-reply@example.com"
+ default_reply_to: "no-reply@example.com"
+ tls: true
+ ssl: false
+ host: ""
+ port: 587
+ user: ""
+ pass: ""
+ identity_providers:
+ google:
+ enabled: false
+ client_id: ""
+ client_secret: ""
+ github:
+ enabled: false
+ client_id: ""
+ client_secret: ""
+ gitlab:
+ enabled: false
+ base_uri: ""
+ client_id: ""
+ client_secret: ""
+ oidc:
+ enabled: false
+ base_uri: ""
+ client_id: ""
+ client_secret: ""
+ ldap:
+ enabled: false
+ host: ""
+ port: 10389
+ ssl: false
+ starttls: false
+ base_dn: ""
+ bind_dn: ""
+ bind_pass: ""
+ attrs_username: ""
+ attrs_email: ""
+ attrs_fullname: ""
+
+envFrom:
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-common-secret'
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-frontend-secret'
+
+probes:
+ liveness:
+ type: HTTP
+ path: /
+ readiness:
+ type: HTTP
+ path: /
+ startup:
+ type: HTTP
+ path: /
+
+service:
+ main:
+ ports:
+ main:
+ protocol: HTTP
+ targetPort: 80
+ port: 10592
+
+persistence:
+ data:
+ enabled: true
+ mountPath: /opt/data
+ noMount: true
+ assets:
+ enabled: true
+ mountPath: /opt/data/assets
+
+postgresql:
+ enabled: true
+ existingSecret: dbcreds
+ postgresqlDatabase: penpot
+ postgresqlUsername: penpot
+
+redis:
+ enabled: true
+ existingSecret: rediscreds
+ redisUsername: penpot
+
+portal:
+ enabled: true
diff --git a/incubator/penpot/0.0.1/questions.yaml b/incubator/penpot/0.0.1/questions.yaml
new file mode 100644
index 0000000000..b1677ad324
--- /dev/null
+++ b/incubator/penpot/0.0.1/questions.yaml
@@ -0,0 +1,2124 @@
+groups:
+ - name: Container Image
+ description: Image to be used for container
+ - name: General Settings
+ description: General Deployment Settings
+ - name: App Configuration
+ description: App Specific Config Options
+ - name: Networking and Services
+ description: Configure Network and Services for Container
+ - name: Storage and Persistence
+ description: Persist and Share Data that is Separate from the Container
+ - name: Ingress
+ description: Ingress Configuration
+ - name: Security and Permissions
+ description: Configure Security Context and Permissions
+ - name: Resources and Devices
+ description: "Specify Resources/Devices to be Allocated to Workload"
+ - name: Middlewares
+ description: Traefik Middlewares
+ - name: Metrics
+ description: Metrics
+ - name: VPN
+ description: VPN
+ - name: Addons
+ description: Addon Configuration
+ - name: Advanced
+ description: Advanced Configuration
+ - name: Documentation
+ description: Documentation
+portals:
+ open:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: global
+ label: Global Settings
+ group: "General Settings"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: isSCALE
+ label: Flag this is SCALE
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: controller
+ group: "General Settings"
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: replicas
+ description: Number of desired pod replicas
+ label: Desired Replicas
+ schema:
+ type: int
+ required: true
+ default: 1
+ - variable: customextraargs
+ group: "General Settings"
+ label: "Extra Args"
+ description: "Do not click this unless you know what you are doing"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: extraArgs
+ label: Extra Args
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: arg
+ label: Arg
+ schema:
+ type: string
+ - variable: penpot
+ group: App Configuration
+ label: Penpot Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: public_uri
+ label: Public URI
+ description: Public URI.
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: telemetry_enabled
+ label: Telemetry Enabled
+ description: Telemetry Enabled.
+ schema:
+ type: boolean
+ default: false
+ - variable: flags
+ label: Flags
+ description: Feature flags
+ schema:
+ type: list
+ required: true
+ # TODO: Check if it works
+ default: ["enable-registration", "enable-login", "disable-email-verification"]
+ items:
+ - variable: feature_flag
+ label: Feature Flag Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: registration_domain_whitelist
+ label: Registration Domain Whitelist
+ description: Registration Domain Whitelist
+ schema:
+ type: list
+ required: true
+ default: []
+ items:
+ - variable: domain_whitelist
+ label: Domain Whitelist Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: smtp
+ group: App Configuration
+ label: SMTP Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable SMTP
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: default_from
+ label: Default From
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: default_reply_to
+ label: Default Reply To
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: smtp_host
+ label: SMTP Host
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: smtp_port
+ label: SMTP Port
+ schema:
+ type: int
+ required: true
+ default: 587
+ - variable: smtp_user
+ label: SMTP User
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: smtp_pass
+ label: SMTP Pass
+ schema:
+ type: string
+ required: true
+ private: true
+ default: ""
+ - variable: identity_providers
+ group: App Configuration
+ label: Identity Providers Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: google
+ label: Google Identity Provider
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Show Google Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: client_id
+ label: Client ID
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: client_secret
+ label: Client Secret
+ schema:
+ type: string
+ private: true
+ required: true
+ default: ""
+ - variable: github
+ label: Github Identity Provider
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Show Github Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: client_id
+ label: Client ID
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: client_secret
+ label: Client Secret
+ schema:
+ type: string
+ private: true
+ required: true
+ default: ""
+ - variable: gitlab
+ label: Gitlab Identity Provider
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Show Gitlab Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: base_uri
+ label: Base URI
+ schema:
+ type: string
+ required: true
+ default: "https://gitlab.com"
+ - variable: client_id
+ label: Client ID
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: client_secret
+ label: Client Secret
+ schema:
+ type: string
+ private: true
+ required: true
+ default: ""
+ - variable: oidc
+ label: OIDC Identity Provider
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Show OIDC Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: base_uri
+ label: Base URI
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: client_id
+ label: Client ID
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: client_secret
+ label: Client Secret
+ schema:
+ type: string
+ private: true
+ required: true
+ default: ""
+ - variable: ldap
+ label: LDAP Identity Provider
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Show LDAP Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ required: true
+ default: 587
+ - variable: ssl
+ label: SSL
+ schema:
+ type: boolean
+ default: false
+ - variable: starttls
+ label: StartTLS
+ schema:
+ type: boolean
+ default: false
+ - variable: base_dn
+ label: Base DN
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: bind_dn
+ label: Bind DN
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: bind_pass
+ label: Bind Pass
+ schema:
+ type: string
+ private: true
+ required: true
+ default: ""
+ - variable: attrs_username
+ label: ATTRS Username
+ schema:
+ type: string
+ rquired: true
+ default: ""
+ - variable: attrs_email
+ label: ATTRS Email
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: attrs_fullname
+ label: ATTRS Fullname
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: TZ
+ label: Timezone
+ group: "General Settings"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+ - variable: envList
+ label: Extra Environment Variables
+ description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..."
+ group: "General Settings"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ - variable: service
+ group: Networking and Services
+ label: Configure Service(s)
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Service
+ description: The Primary service on which the healthcheck runs, often the webUI
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - value: Simple
+ description: Deprecated CHANGE THIS
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: "Service's Port(s) Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Service Port Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ description: This port exposes the container port on the service
+ schema:
+ type: int
+ default: 10592
+ required: true
+ - variable: serviceexpert
+ group: Networking and Services
+ label: Show Expert Config
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hostNetwork
+ group: Networking and Services
+ label: Host-Networking (Complicated)
+ schema:
+ type: boolean
+ default: false
+ - variable: externalInterfaces
+ description: Add External Interfaces
+ label: Add external Interfaces
+ group: Networking
+ schema:
+ type: list
+ items:
+ - variable: interfaceConfiguration
+ description: Interface Configuration
+ label: Interface Configuration
+ schema:
+ type: dict
+ $ref:
+ - "normalize/interfaceConfiguration"
+ attrs:
+ - variable: hostInterface
+ description: Please Specify Host Interface
+ label: Host Interface
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/interface"
+ - variable: ipam
+ description: Define how IP Address will be managed
+ label: IP Address Management
+ schema:
+ type: dict
+ required: true
+ attrs:
+ - variable: type
+ description: Specify type for IPAM
+ label: IPAM Type
+ schema:
+ type: string
+ required: true
+ enum:
+ - value: dhcp
+ description: Use DHCP
+ - value: static
+ description: Use Static IP
+ show_subquestions_if: static
+ subquestions:
+ - variable: staticIPConfigurations
+ label: Static IP Addresses
+ schema:
+ type: list
+ items:
+ - variable: staticIP
+ label: Static IP
+ schema:
+ type: ipaddr
+ cidr: true
+ - variable: staticRoutes
+ label: Static Routes
+ schema:
+ type: list
+ items:
+ - variable: staticRouteConfiguration
+ label: Static Route Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: destination
+ label: Destination
+ schema:
+ type: ipaddr
+ cidr: true
+ required: true
+ - variable: gateway
+ label: Gateway
+ schema:
+ type: ipaddr
+ cidr: false
+ required: true
+ - variable: serviceList
+ label: Add Manual Custom Services
+ group: Networking and Services
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: serviceListEntry
+ label: Custom Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - value: Simple
+ description: Deprecated CHANGE THIS
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: advancedsvcset
+ label: Show Advanced Service Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: External IP
+ schema:
+ type: string
+ - variable: ipFamilyPolicy
+ label: IP Family Policy
+ description: Specify the IP Policy
+ schema:
+ type: string
+ default: SingleStack
+ enum:
+ - value: SingleStack
+ description: SingleStack
+ - value: PreferDualStack
+ description: PreferDualStack
+ - value: RequireDualStack
+ description: RequireDualStack
+ - variable: ipFamilies
+ label: IP Families
+ description: (Advanced) The IP Families that should be used
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ipFamily
+ label: IP Family
+ schema:
+ type: string
+ - variable: portsList
+ label: Additional Service Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsListEntry
+ label: Custom ports
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Port
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Port Name
+ schema:
+ type: string
+ default: ""
+ - variable: protocol
+ label: Port Type
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: HTTP
+ description: HTTP
+ - value: HTTPS
+ description: HTTPS
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - variable: targetPort
+ label: Target Port
+ description: This port exposes the container port on the service
+ schema:
+ type: int
+ required: true
+ - variable: port
+ label: Container Port
+ schema:
+ type: int
+ required: true
+ - variable: persistence
+ label: Integrated Persistent Storage
+ description: Integrated Persistent Storage
+ group: Storage and Persistence
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: data
+ label: App Data Storage
+ description: Stores the Application Data.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: setPermissions
+ label: Automatic Permissions
+ description: Automatically set permissions on install
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: persistenceList
+ label: Additional App Storage
+ group: Storage and Persistence
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: persistenceListEntry
+ label: Custom Storage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the storage
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: hostPath
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: setPermissions
+ label: Automatic Permissions
+ description: Automatically set permissions on install
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: mountPath
+ label: Mount Path
+ description: Path inside the container the storage is mounted
+ schema:
+ type: string
+ default: ""
+ required: true
+ valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$'
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size Quotum of Storage
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: ingress
+ label: ""
+ group: Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: 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: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: middlewares
+ label: Traefik Middlewares
+ description: Add previously created Traefik Middlewares to this Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: ingressList
+ label: Add Manual Custom Ingresses
+ group: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressListEntry
+ label: Custom Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: ingressClassName
+ label: IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: service
+ label: Linked Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Service Name
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: Service Port
+ schema:
+ type: int
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: scaleCert
+ label: Select TrueNAS SCALE Certificate
+ schema:
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: entrypoint
+ label: Traefik Entrypoint
+ description: Entrypoint used by Traefik when using Traefik as Ingress Provider
+ schema:
+ type: string
+ default: websecure
+ required: true
+ - variable: middlewares
+ label: Traefik Middlewares
+ description: Add previously created Traefik Middlewares to this Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: security
+ label: Container Security Settings
+ group: Security and Permissions
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: editsecurity
+ label: Change PUID / UMASK values
+ description: By enabling this you override default set values.
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: PUID
+ label: Process User ID - PUID
+ description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ label: UMASK
+ description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps
+ schema:
+ type: string
+ default: "002"
+ - variable: advancedSecurity
+ label: Show Advanced Security Settings
+ group: Security and Permissions
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: securityContext
+ label: Security Context
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: privileged
+ label: Privileged mode
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnlyRootFilesystem
+ label: ReadOnly Root Filesystem
+ schema:
+ type: boolean
+ default: false
+ - variable: allowPrivilegeEscalation
+ label: Allow Privilege Escalation
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsNonRoot
+ label: runAsNonRoot
+ schema:
+ type: boolean
+ default: false
+ - 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: resources
+ group: Resources and Devices
+ label: "Resource Limits"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limits
+ label: Advanced Limit Resource Consumption
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 4000m
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: RAM
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 8Gi
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: requests
+ label: "Minimum Resources Required (request)"
+ schema:
+ additional_attrs: true
+ type: dict
+ hidden: true
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 10m
+ hidden: true
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: "RAM"
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 50Mi
+ hidden: true
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: deviceList
+ label: Mount USB Devices
+ group: Resources and Devices
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: deviceListEntry
+ label: Device
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Storage
+ schema:
+ type: boolean
+ default: true
+ - variable: type
+ label: (Advanced) Type of Storage
+ description: Sets the persistence type
+ schema:
+ type: string
+ default: hostPath
+ hidden: true
+ - variable: readOnly
+ label: readOnly
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Device Path
+ description: Path to the device on the host system
+ schema:
+ type: path
+ - variable: mountPath
+ label: Container Device Path
+ description: Path inside the container the device is mounted
+ schema:
+ type: string
+ default: "/dev/ttyACM0"
+ # Specify GPU configuration
+ - variable: scaleGPU
+ label: GPU Configuration
+ group: Resources and Devices
+ schema:
+ type: dict
+ $ref:
+ - "definitions/gpuConfiguration"
+ attrs: []
+ - variable: horizontalPodAutoscaler
+ group: Advanced
+ label: (Advanced) Horizontal Pod Autoscaler
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hpaEntry
+ label: HPA Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: target
+ label: Target
+ description: Deployment name, Defaults to Main Deployment
+ schema:
+ type: string
+ default: ""
+ - variable: minReplicas
+ label: Minimum Replicas
+ schema:
+ type: int
+ default: 1
+ - variable: maxReplicas
+ label: Maximum Replicas
+ schema:
+ type: int
+ default: 5
+ - variable: targetCPUUtilizationPercentage
+ label: Target CPU Utilization Percentage
+ schema:
+ type: int
+ default: 80
+ - variable: targetMemoryUtilizationPercentage
+ label: Target Memory Utilization Percentage
+ schema:
+ type: int
+ default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: git
+ label: Git Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: deployKey
+ description: Raw SSH Private Key
+ label: Deploy Key
+ schema:
+ type: string
+ - variable: deployKeyBase64
+ description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence
+ label: Deploy Key Base64
+ schema:
+ type: string
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: advancedsvcset
+ label: Show Advanced Service Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: External IP
+ schema:
+ type: string
+ - variable: ipFamilyPolicy
+ label: IP Family Policy
+ description: Specify the IP Policy
+ schema:
+ type: string
+ default: SingleStack
+ enum:
+ - value: SingleStack
+ description: SingleStack
+ - value: PreferDualStack
+ description: PreferDualStack
+ - value: RequireDualStack
+ description: RequireDualStack
+ - variable: ipFamilies
+ label: IP Families
+ description: (Advanced) The IP Families that should be used
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ipFamily
+ label: IP Family
+ schema:
+ type: string
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: nodePort
+ description: Leave Empty to Disable
+ label: nodePort DEPRECATED
+ schema:
+ type: int
+ default: 36107
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: openvpn
+ description: OpenVPN
+ - value: wireguard
+ description: Wireguard
+ - value: tailscale
+ description: Tailscale
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: dict
+ show_if: [["type", "!=", "disabled"]]
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: hostPath
+ hidden: true
+ - variable: hostPathType
+ label: hostPathType
+ schema:
+ type: string
+ default: File
+ hidden: true
+ - variable: noMount
+ label: noMount
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: hostPath
+ label: Full Path to File
+ description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn"
+ schema:
+ type: string
+ default: ""
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
diff --git a/incubator/penpot/0.0.1/templates/_backend.tpl b/incubator/penpot/0.0.1/templates/_backend.tpl
new file mode 100644
index 0000000000..87a0807ac9
--- /dev/null
+++ b/incubator/penpot/0.0.1/templates/_backend.tpl
@@ -0,0 +1,39 @@
+{{/* Define the backend container */}}
+{{- define "penpot.backend" -}}
+image: {{ .Values.backendImage.repository }}:{{ .Values.backendImage.tag }}
+imagePullPolicy: '{{ .Values.backendImage.pullPolicy }}'
+securityContext:
+ runAsUser: {{ .Values.podSecurityContext.runAsUser }}
+ runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
+ readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
+ runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
+volumeMounts:
+ - name: data
+ mountPath: {{ .Values.persistence.data.mountPath }}
+envFrom:
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-common-secret'
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-backend-secret'
+readinessProbe:
+ tcpSocket:
+ port: 6060
+ initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
+ periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
+ failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
+livenessProbe:
+ tcpSocket:
+ port: 6060
+ initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
+ periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
+ failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
+startupProbe:
+ tcpSocket:
+ port: 6060
+ initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
+ periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
+ failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
+{{- end }}
diff --git a/incubator/penpot/0.0.1/templates/_exporter.tpl b/incubator/penpot/0.0.1/templates/_exporter.tpl
new file mode 100644
index 0000000000..51bb3e1339
--- /dev/null
+++ b/incubator/penpot/0.0.1/templates/_exporter.tpl
@@ -0,0 +1,37 @@
+{{/* Define the exporter container */}}
+{{- define "penpot.exporter" -}}
+image: {{ .Values.exporterImage.repository }}:{{ .Values.exporterImage.tag }}
+imagePullPolicy: '{{ .Values.exporterImage.pullPolicy }}'
+securityContext:
+ runAsUser: {{ .Values.podSecurityContext.runAsUser }}
+ runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
+ readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
+ runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
+envFrom:
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-common-secret'
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-exporter-secret'
+readinessProbe:
+ tcpSocket:
+ port: 6061
+ initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
+ periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
+ failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
+livenessProbe:
+ httpGet:
+ tcpSocket:
+ port: 6061
+ initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
+ periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
+ failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
+startupProbe:
+ tcpSocket:
+ port: 6061
+ initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
+ periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
+ failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
+{{- end }}
diff --git a/incubator/penpot/0.0.1/templates/_secret.tpl b/incubator/penpot/0.0.1/templates/_secret.tpl
new file mode 100644
index 0000000000..c491a52c3f
--- /dev/null
+++ b/incubator/penpot/0.0.1/templates/_secret.tpl
@@ -0,0 +1,105 @@
+{{/* Define the secret */}}
+{{- define "penpot.secret" -}}
+
+{{- $secretName := printf "%s-common-secret" (include "tc.common.names.fullname" .) }}
+{{- $exporterSecretName := printf "%s-exporter-secret" (include "tc.common.names.fullname" .) }}
+{{- $backendSecretName := printf "%s-backend-secret" (include "tc.common.names.fullname" .) }}
+{{- $frontendSecretName := printf "%s-frontend-secret" (include "tc.common.names.fullname" .) }}
+
+---
+apiVersion: v1
+kind: Secret
+type: Opaque
+metadata:
+ name: {{ $secretName }}
+ labels:
+ {{- include "tc.common.labels" . | nindent 4 }}
+stringData:
+ {{/* Dependencies */}}
+ PENPOT_DATABASE_URI: {{ printf "postgresql://%v/%v" (.Values.postgresql.url.plainport | trimAll "\"") .Values.postgresql.postgresqlDatabase }}
+ PENPOT_DATABASE_USERNAME: {{ .Values.postgresql.postgresqlUsername }}
+ PENPOT_DATABASE_PASSWORD: {{ .Values.postgresql.postgresqlPassword | trimAll "\"" }}
+ PENPOT_REDIS_URI: {{ printf "redis://%v:%v@%v/%v" "default" (.Values.redis.redisPassword | trimAll "\"") (.Values.redis.url.plainport | trimAll "\"") "0" }}
+ {{/* Penpot */}}
+ PENPOT_STORAGE_ASSETS_FS_DIRECTORY: {{ .Values.persistence.assets.mountPath }}
+ PENPOT_ASSETS_STORAGE_BACKEND: assets-fs
+ PENPOT_HTTP_SERVER_HOST: "0.0.0.0"
+ {{- with .Values.penpot.flags }}
+ PENPOT_FLAGS: {{ join " " . | quote }}
+ {{- end }}
+ PENPOT_TELEMETRY_ENABLED: {{ .Values.penpot.telemetry_enabled | quote }}
+ {{- with .Values.penpot.registration_domain_whitelist }}
+ PENPOT_REGISTRATION_DOMAIN_WHITELIST: {{ join "," . }}
+ {{- end }}
+ {{- if .Values.penpot.smtp.enabled }}
+ PENPOT_SMTP_DEFAULT_FROM: {{ .Values.penpot.smtp.default_from | quote }}
+ PENPOT_SMTP_DEFAULT_REPLY_TO: {{ .Values.penpot.smtp.default_reply_to | quote }}
+ PENPOT_SMTP_HOST: {{ .Values.penpot.smtp.host | quote }}
+ PENPOT_SMTP_PORT: {{ .Values.penpot.smtp.port | quote }}
+ PENPOT_SMTP_USERNAME: {{ .Values.penpot.smtp.user | quote }}
+ PENPOT_SMTP_PASSWORD: {{ .Values.penpot.smtp.pass | quote }}
+ PENPOT_SMTP_TLS: {{ .Values.penpot.smtp.tls | quote }}
+ PENPOT_SMTP_SSL: {{ .Values.penpot.smtp.ssl | quote }}
+ {{- end }}
+ {{- if .Values.penpot.identity_providers.google.enabled }}
+ PENPOT_GOOGLE_CLIENT_ID: {{ .Values.penpot.identity_providers.google.client_id | quote }}
+ PENPOT_GOOGLE_CLIENT_SECRET: {{ .Values.penpot.identity_providers.google.client_secret | quote }}
+ {{- end }}
+ {{- if .Values.penpot.identity_providers.github.enabled }}
+ PENPOT_GITHUB_CLIENT_ID: {{ .Values.penpot.identity_providers.github.client_id | quote }}
+ PENPOT_GITHUB_CLIENT_ID: {{ .Values.penpot.identity_providers.github.client_secret | quote }}
+ {{- end }}
+ {{- if .Values.penpot.identity_providers.gitlab.enabled }}
+ PENPOT_GITLAB_BASE_URI: {{ .Values.penpot.identity_providers.gitlab.base_uri | quote }}
+ PENPOT_GITLAB_CLIENT_ID: {{ .Values.penpot.identity_providers.gitlab.client_id | quote }}
+ PENPOT_GITLAB_CLIENT_SECRET: {{ .Values.penpot.identity_providers.gitlab.client_secret | quote }}
+ {{- end }}
+ {{- if .Values.penpot.identity_providers.oidc.enabled }}
+ PENPOT_OIDC_BASE_URI: {{ .Values.penpot.identity_providers.oidc.base_uri | quote }}
+ PENPOT_OIDC_CLIENT_ID: {{ .Values.penpot.identity_providers.oidc.client_id | quote }}
+ PENPOT_OIDC_CLIENT_SECRET: {{ .Values.penpot.identity_providers.oidc.client_secret | quote }}
+ {{- end }}
+ {{- if .Values.penpot.identity_providers.ldap.enabled }}
+ PENPOT_LDAP_HOST: {{ .Values.penpot.identity_providers.ldap.host | quote }}
+ PENPOT_LDAP_PORT: {{ .Values.penpot.identity_providers.ldap.port | quote }}
+ PENPOT_LDAP_SSL: {{ .Values.penpot.identity_providers.ldap.ssl | quote }}
+ PENPOT_LDAP_STARTTLS: {{ .Values.penpot.identity_providers.ldap.starttls | quote }}
+ PENPOT_LDAP_BASE_DN: {{ .Values.penpot.identity_providers.ldap.base_dn | quote }}
+ PENPOT_LDAP_BIND_DN: {{ .Values.penpot.identity_providers.ldap.bind_dn | quote }}
+ PENPOT_LDAP_BIND_PASSWORD: {{ .Values.penpot.identity_providers.ldap.bind_pass | quote }}
+ PENPOT_LDAP_ATTRS_USERNAME: {{ .Values.penpot.identity_providers.ldap.attrs_username | quote }}
+ PENPOT_LDAP_ATTRS_EMAIL: {{ .Values.penpot.identity_providers.ldap.attrs_email | quote }}
+ PENPOT_LDAP_ATTRS_FULLNAME: {{ .Values.penpot.identity_providers.ldap.attrs_fullname | quote }}
+ {{- end }}
+
+---
+apiVersion: v1
+kind: Secret
+type: Opaque
+metadata:
+ name: {{ $exporterSecretName }}
+ labels:
+ {{- include "tc.common.labels" . | nindent 4 }}
+stringData:
+ PENPOT_PUBLIC_URI: http://penpot-frontend:{{ .Values.service.main.ports.main.targetPort }}
+---
+apiVersion: v1
+kind: Secret
+type: Opaque
+metadata:
+ name: {{ $backendSecretName }}
+ labels:
+ {{- include "tc.common.labels" . | nindent 4 }}
+stringData:
+ PENPOT_PUBLIC_URI: {{ .Values.penpot.public_uri | quote }}
+---
+apiVersion: v1
+kind: Secret
+type: Opaque
+metadata:
+ name: {{ $frontendSecretName }}
+ labels:
+ {{- include "tc.common.labels" . | nindent 4 }}
+stringData:
+ PENPOT_PUBLIC_URI: {{ .Values.penpot.public_uri | quote }}
+{{- end }}
diff --git a/incubator/penpot/0.0.1/templates/common.yaml b/incubator/penpot/0.0.1/templates/common.yaml
new file mode 100644
index 0000000000..b937945b8d
--- /dev/null
+++ b/incubator/penpot/0.0.1/templates/common.yaml
@@ -0,0 +1,10 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.common.loader.init" . }}
+
+{{- include "penpot.secret" . -}}
+
+{{- $_ := set .Values.additionalContainers "backend" (include "penpot.backend" . | fromYaml) -}}
+{{- $_ := set .Values.additionalContainers "exporter" (include "penpot.exporter" . | fromYaml) -}}
+
+{{/* Render the templates */}}
+{{ include "tc.common.loader.apply" . }}
diff --git a/incubator/penpot/0.0.1/values.yaml b/incubator/penpot/0.0.1/values.yaml
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/incubator/penpot/item.yaml b/incubator/penpot/item.yaml
new file mode 100644
index 0000000000..3ea5f03cc5
--- /dev/null
+++ b/incubator/penpot/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/penpot.png
+categories:
+- media
+