From b8ed3a567cb89ed513f241100ce257d7be6b7dee Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Thu, 28 Dec 2023 12:15:23 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- incubator/awesome-ttrss/4.0.0/CHANGELOG.md | 2 +- incubator/twofauth/0.0.1/CHANGELOG.md | 8 + incubator/twofauth/0.0.1/Chart.yaml | 27 + incubator/twofauth/0.0.1/README.md | 1 + incubator/twofauth/0.0.1/app-changelog.md | 4 + incubator/twofauth/0.0.1/app-readme.md | 8 + .../twofauth/0.0.1/charts/common-17.1.4.tgz | Bin 0 -> 97413 bytes incubator/twofauth/0.0.1/ix_values.yaml | 126 + incubator/twofauth/0.0.1/questions.yaml | 2998 +++++++++++++++++ incubator/twofauth/0.0.1/templates/NOTES.txt | 1 + .../twofauth/0.0.1/templates/_secrets.tpl | 13 + .../twofauth/0.0.1/templates/common.yaml | 10 + incubator/twofauth/0.0.1/values.yaml | 0 incubator/twofauth/item.yaml | 4 + 14 files changed, 3201 insertions(+), 1 deletion(-) create mode 100644 incubator/twofauth/0.0.1/CHANGELOG.md create mode 100644 incubator/twofauth/0.0.1/Chart.yaml create mode 100644 incubator/twofauth/0.0.1/README.md create mode 100644 incubator/twofauth/0.0.1/app-changelog.md create mode 100644 incubator/twofauth/0.0.1/app-readme.md create mode 100644 incubator/twofauth/0.0.1/charts/common-17.1.4.tgz create mode 100644 incubator/twofauth/0.0.1/ix_values.yaml create mode 100644 incubator/twofauth/0.0.1/questions.yaml create mode 100644 incubator/twofauth/0.0.1/templates/NOTES.txt create mode 100644 incubator/twofauth/0.0.1/templates/_secrets.tpl create mode 100644 incubator/twofauth/0.0.1/templates/common.yaml create mode 100644 incubator/twofauth/0.0.1/values.yaml create mode 100644 incubator/twofauth/item.yaml diff --git a/incubator/awesome-ttrss/4.0.0/CHANGELOG.md b/incubator/awesome-ttrss/4.0.0/CHANGELOG.md index f899b4611a..c63ba0d63e 100644 --- a/incubator/awesome-ttrss/4.0.0/CHANGELOG.md +++ b/incubator/awesome-ttrss/4.0.0/CHANGELOG.md @@ -6,6 +6,7 @@ + ## [awesome-ttrss-5.0.9](https://github.com/truecharts/charts/compare/awesome-ttrss-5.0.8...awesome-ttrss-5.0.9) (2023-12-22) ### Fix @@ -96,4 +97,3 @@ ## [awesome-ttrss-5.0.2](https://github.com/truecharts/charts/compare/awesome-ttrss-5.0.0...awesome-ttrss-5.0.2) (2023-12-16) -### Chore diff --git a/incubator/twofauth/0.0.1/CHANGELOG.md b/incubator/twofauth/0.0.1/CHANGELOG.md new file mode 100644 index 0000000000..81e6a0af01 --- /dev/null +++ b/incubator/twofauth/0.0.1/CHANGELOG.md @@ -0,0 +1,8 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [twofauth-0.0.1]twofauth-0.0.1 (2023-12-28) + diff --git a/incubator/twofauth/0.0.1/Chart.yaml b/incubator/twofauth/0.0.1/Chart.yaml new file mode 100644 index 0000000000..dd0231eea5 --- /dev/null +++ b/incubator/twofauth/0.0.1/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "4.2.4" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 17.1.4 +deprecated: false +description: A Web app to manage your 2FA accounts and generate their security codes. +home: https://truecharts.org/charts/incubator/twofauth +icon: https://truecharts.org/img/hotlink-ok/chart-icons/twofauth.png +keywords: + - 2fauth + - auth +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: twofauth +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/twofauth + - https://github.com/Bubka/2fauth +type: application +version: 0.0.1 +annotations: + truecharts.org/category: auth + truecharts.org/SCALE-support: "true" diff --git a/incubator/twofauth/0.0.1/README.md b/incubator/twofauth/0.0.1/README.md new file mode 100644 index 0000000000..7e59600739 --- /dev/null +++ b/incubator/twofauth/0.0.1/README.md @@ -0,0 +1 @@ +# README diff --git a/incubator/twofauth/0.0.1/app-changelog.md b/incubator/twofauth/0.0.1/app-changelog.md new file mode 100644 index 0000000000..a5bb4163a1 --- /dev/null +++ b/incubator/twofauth/0.0.1/app-changelog.md @@ -0,0 +1,4 @@ + + +## [twofauth-0.0.1]twofauth-0.0.1 (2023-12-28) + diff --git a/incubator/twofauth/0.0.1/app-readme.md b/incubator/twofauth/0.0.1/app-readme.md new file mode 100644 index 0000000000..1cefb2785a --- /dev/null +++ b/incubator/twofauth/0.0.1/app-readme.md @@ -0,0 +1,8 @@ +A Web app to manage your 2FA accounts and generate their security codes. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/twofauth](https://truecharts.org/charts/incubator/twofauth) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/twofauth/0.0.1/charts/common-17.1.4.tgz b/incubator/twofauth/0.0.1/charts/common-17.1.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..3e9677a9393900a00f43ff08254246e3249b50ba GIT binary patch literal 97413 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

3dKkxh;(JJ>WSVTH`iQ<*r}d)VA3nqEXs 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 A!2kdN literal 0 HcmV?d00001 diff --git a/incubator/twofauth/0.0.1/ix_values.yaml b/incubator/twofauth/0.0.1/ix_values.yaml new file mode 100644 index 0000000000..998218b18b --- /dev/null +++ b/incubator/twofauth/0.0.1/ix_values.yaml @@ -0,0 +1,126 @@ +image: + repository: 2fauth/2fauth + pullPolicy: IfNotPresent + tag: 5.0.0@sha256:4845b8be5b6a2e40e29bb27dee36fffc746ef15b8c9e09f065dcae646c34182f + +securityContext: + container: + readOnlyRootFilesystem: false + runAsUser: 1000 + runAsGroup: 1000 + +twofauth: + app: + name: 2FAuth + site_owner: mail@example.com + url: http://localhost:8000 + session_lifetime: 120 + trusted_proxies: [] + mail: + driver: log + host: "" + port: 587 + from: "" + user: "" + pass: "" + # TLS | STARTTLS | SSL + encryption: STARTTLS + from_name: 2FAuth + from_address: changeme@example.com + auth: + # web-guard | reverse-proxy-guard + guard: web-guard + # show if guard uses reverse-proxy-guard + proxy_header_for_user: "" + proxy_header_for_email: "" + proxy_logout_url: "" + webauthn: + name: 2FAuth + id: "" + icon: "" + # required | preferred | discouraged + user_verified: preferred + +workload: + main: + podSpec: + containers: + main: + probes: + liveness: + path: /infos + readiness: + path: /infos + startup: + type: tcp + env: + # APP + APP_ENV: local + APP_KEY: + secretKeyRef: + name: twofauth-secret + key: APP_KEY + APP_NAME: "{{ .Values.twofauth.app.name }}" + SITE_OWNER: "{{ .Values.twofauth.app.site_owner }}" + APP_URL: "{{ .Values.twofauth.app.url }}" + SESSION_LIFETIME: "{{ .Values.twofauth.app.session_lifetime }}" + TRUSTED_PROXIES: '{{ join "," .Values.twofauth.app.trusted_proxies }}' + # MAIL + MAIL_DRIVER: "{{ .Values.twofauth.mail.driver }}" + MAIL_HOST: "{{ .Values.twofauth.mail.host }}" + MAIL_PORT: "{{ .Values.twofauth.mail.port }}" + MAIL_FROM: "{{ .Values.twofauth.mail.from }}" + MAIL_USERNAME: "{{ .Values.twofauth.mail.user }}" + MAIL_PASSWORD: "{{ .Values.twofauth.mail.pass }}" + MAIL_ENCRYPTION: "{{ .Values.twofauth.mail.encryption }}" + MAIL_FROM_NAME: "{{ .Values.twofauth.mail.from_name }}" + MAIL_FROM_ADDRESS: "{{ .Values.twofauth.mail.from_address }}" + # AUTH + AUTHENTICATION_GUARD: "{{ .Values.twofauth.auth.guard }}" + AUTH_PROXY_HEADER_FOR_USER: "{{ .Values.twofauth.auth.proxy_header_for_user }}" + AUTH_PROXY_HEADER_FOR_EMAIL: "{{ .Values.twofauth.auth.proxy_header_for_email }}" + PROXY_LOGOUT_URL: "{{ .Values.twofauth.auth.proxy_logout_url }}" + # WebAuthn: + WEBAUTHN_NAME: "{{ .Values.twofauth.webauthn.name }}" + WEBAUTHN_ID: "{{ .Values.twofauth.webauthn.id }}" + # Optional image data in BASE64 (128 bytes maximum) or an image url + WEBAUTHN_ICON: "{{ .Values.twofauth.webauthn.icon }}" + WEBAUTHN_USER_VERIFICATION: "{{ .Values.twofauth.webauthn.user_verified }}" + # Postgres + DB_CONNECTION: pgsql + DB_DATABASE: "{{ .Values.cnpg.main.database }}" + DB_USERNAME: "{{ .Values.cnpg.main.user }}" + DB_PORT: 5432 + DB_HOST: + secretKeyRef: + name: cnpg-main-urls + key: host + DB_PASSWORD: + secretKeyRef: + name: cnpg-main-user + key: password + +service: + main: + ports: + main: + protocol: http + targetPort: 8000 + port: 8000 + +persistence: + config: + enabled: true + mountPath: /2fauth + varrun: + enabled: false + +cnpg: + main: + enabled: true + user: twofauth + database: twofauth + +portal: + open: + enabled: true diff --git a/incubator/twofauth/0.0.1/questions.yaml b/incubator/twofauth/0.0.1/questions.yaml new file mode 100644 index 0000000000..81d97a602d --- /dev/null +++ b/incubator/twofauth/0.0.1/questions.yaml @@ -0,0 +1,2998 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: twofauth + group: App Configuration + label: 2fauth + schema: + additional_attrs: true + type: dict + attrs: + - variable: app + label: App Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: App Name + schema: + type: string + default: "2FAuth" + - variable: session_lifetime + label: Session Lifetime + schema: + type: int + default: 120 + - variable: site_owner + label: Site Owner Email + schema: + type: string + default: "" + - variable: trusted_proxies + label: Trusted Proxies + schema: + type: list + empty: false + default: [] + required: true + items: + - variable: proxy + label: Proxy + schema: + type: string + required: true + default: "" + - variable: mail + label: Mail Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: driver + label: Driver + schema: + type: string + required: true + default: log + enum: + - value: log + description: Log + - value: smtp + description: SMTP + - variable: host + label: Host + schema: + type: string + default: "" + - variable: port + label: Port + schema: + type: int + default: 587 + - variable: from + label: From + schema: + type: string + default: "" + - variable: user + label: User + schema: + type: string + default: "" + - variable: pass + label: Pass + schema: + type: string + private: true + default: "" + - variable: encryption + label: encryption + schema: + type: string + default: "STARTTLS" + enum: + - value: TLS + description: TLS + - value: STARTTLS + description: STARTTLS + - value: SSL + description: SSL + - variable: from_name + label: From Name + schema: + type: string + default: "2FAuth" + - variable: from_address + label: From Address + schema: + type: string + default: "" + - variable: auth + label: Auth Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: guard + label: Guard + schema: + type: string + default: "web-guard" + enum: + - value: web-guard + description: Web Guard + - value: reverse-proxy-guard + description: Reverse Proxy Guard + - variable: proxy_header_for_user + label: Proxy Header for User + schema: + type: string + default: "" + show_if: [[guard, "=", "reverse-proxy-guard"]] + - variable: proxy_header_for_email + label: Proxy Header for Email + schema: + type: string + default: "" + show_if: [[guard, "=", "reverse-proxy-guard"]] + - variable: proxy_logout_url + label: Proxy Logout Url + schema: + type: string + default: "" + show_if: [[guard, "=", "reverse-proxy-guard"]] + - variable: webauthn + label: WebAuthn Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + default: 2FAuth + - variable: id + label: ID + schema: + type: string + default: "" + - variable: icon + label: Icon + schema: + type: string + default: "" + - variable: user_verified + label: User Verified + schema: + type: string + default: preferred + enum: + - value: required + description: Required + - value: preferred + description: Preferred + - value: discouraged + description: Discouraged + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 1000 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 1000 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/twofauth/0.0.1/templates/NOTES.txt b/incubator/twofauth/0.0.1/templates/NOTES.txt new file mode 100644 index 0000000000..efcb74cb77 --- /dev/null +++ b/incubator/twofauth/0.0.1/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/incubator/twofauth/0.0.1/templates/_secrets.tpl b/incubator/twofauth/0.0.1/templates/_secrets.tpl new file mode 100644 index 0000000000..5008373e37 --- /dev/null +++ b/incubator/twofauth/0.0.1/templates/_secrets.tpl @@ -0,0 +1,13 @@ +{{/* Define the secrets */}} +{{- define "twofauth.secret" -}} + {{- $secretName := (printf "%s-twofauth-secret" (include "tc.v1.common.lib.chart.names.fullname" $)) }} + + {{- $appKey := randAlphaNum 32 -}} + + {{- with lookup "v1" "Secret" .Release.Namespace $secretName -}} + {{- $appKey = index .data "APP_KEY" | b64dec -}} + {{- end }} +enabled: true +data: + APP_KEY: {{ $appKey }} +{{- end -}} diff --git a/incubator/twofauth/0.0.1/templates/common.yaml b/incubator/twofauth/0.0.1/templates/common.yaml new file mode 100644 index 0000000000..959caee064 --- /dev/null +++ b/incubator/twofauth/0.0.1/templates/common.yaml @@ -0,0 +1,10 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . -}} + +{{- $secret := include "twofauth.secret" . | fromYaml -}} +{{- if $secret -}} + {{- $_ := set .Values.secret "twofauth-secret" $secret -}} +{{- end -}} + +{{/* Render the templates */}} +{{- include "tc.v1.common.loader.apply" . -}} diff --git a/incubator/twofauth/0.0.1/values.yaml b/incubator/twofauth/0.0.1/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/incubator/twofauth/item.yaml b/incubator/twofauth/item.yaml new file mode 100644 index 0000000000..342c30fa27 --- /dev/null +++ b/incubator/twofauth/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/twofauth.png +categories: +- auth +screenshots: []