From 8c705545bb1a5b3f03eb1d03fc0d7f05dad92df6 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Mon, 4 Dec 2023 16:30:06 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- incubator/fireshare/3.0.0/CHANGELOG.md | 99 + incubator/fireshare/3.0.0/Chart.yaml | 35 + incubator/fireshare/3.0.0/README.md | 27 + incubator/fireshare/3.0.0/app-changelog.md | 0 incubator/fireshare/3.0.0/app-readme.md | 8 + .../fireshare/3.0.0/charts/common-15.3.1.tgz | Bin 0 -> 83855 bytes incubator/fireshare/3.0.0/ix_values.yaml | 46 + incubator/fireshare/3.0.0/questions.yaml | 2647 +++++++++++++++++ .../fireshare/3.0.0/templates/_secrets.tpl | 13 + .../fireshare/3.0.0/templates/common.yaml | 10 + incubator/fireshare/3.0.0/values.yaml | 0 incubator/orbital-sync/3.0.0/CHANGELOG.md | 2 +- 12 files changed, 2886 insertions(+), 1 deletion(-) create mode 100644 incubator/fireshare/3.0.0/CHANGELOG.md create mode 100644 incubator/fireshare/3.0.0/Chart.yaml create mode 100644 incubator/fireshare/3.0.0/README.md create mode 100644 incubator/fireshare/3.0.0/app-changelog.md create mode 100644 incubator/fireshare/3.0.0/app-readme.md create mode 100644 incubator/fireshare/3.0.0/charts/common-15.3.1.tgz create mode 100644 incubator/fireshare/3.0.0/ix_values.yaml create mode 100644 incubator/fireshare/3.0.0/questions.yaml create mode 100644 incubator/fireshare/3.0.0/templates/_secrets.tpl create mode 100644 incubator/fireshare/3.0.0/templates/common.yaml create mode 100644 incubator/fireshare/3.0.0/values.yaml diff --git a/incubator/fireshare/3.0.0/CHANGELOG.md b/incubator/fireshare/3.0.0/CHANGELOG.md new file mode 100644 index 00000000000..2acb4f60b16 --- /dev/null +++ b/incubator/fireshare/3.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + + +## [fireshare-2.0.13](https://github.com/truecharts/charts/compare/fireshare-2.0.12...fireshare-2.0.13) (2023-12-03) + +### Chore + +- bump everything to ensure catalog has latest versions + + + + +## [fireshare-2.0.12](https://github.com/truecharts/charts/compare/fireshare-3.0.0...fireshare-2.0.12) (2023-12-02) + +### Chore + +- fix annotations again + - update annotations + - cleanup chart.yaml and add min-max scale version + - Fix typo in categories and make them singular ([#13693](https://github.com/truecharts/charts/issues/13693)) + + ### Fix + +- ensure all questions.yaml can be rendered ([#15612](https://github.com/truecharts/charts/issues/15612)) + + + + + + +## [fireshare-3.0.0](https://github.com/truecharts/charts/compare/fireshare-2.0.11...fireshare-3.0.0) (2023-07-31) + +### Feat + +- hide advanced ingress options behind checbox ([#9203](https://github.com/truecharts/charts/issues/9203)) + + ### Fix + +- fix mistakes on questions.yaml + - fix indentation ([#8536](https://github.com/truecharts/charts/issues/8536)) + + + + +## [fireshare-2.0.11](https://github.com/truecharts/charts/compare/fireshare-2.0.10...fireshare-2.0.11) (2023-02-10) + +### Fix + +- ensure new helm deps repo is used in latest releases as well. + + + + +## [fireshare-2.0.10](https://github.com/truecharts/charts/compare/fireshare-2.0.9...fireshare-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [fireshare-2.0.9](https://github.com/truecharts/charts/compare/fireshare-2.0.8...fireshare-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [fireshare-2.0.8](https://github.com/truecharts/charts/compare/fireshare-2.0.7...fireshare-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [fireshare-2.0.7](https://github.com/truecharts/charts/compare/fireshare-2.0.6...fireshare-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [fireshare-2.0.6](https://github.com/truecharts/charts/compare/fireshare-2.0.5...fireshare-2.0.6) (2022-12-23) + +### Chore + +- update container image tccr.io/truecharts/fireshare to v1.2.8 + diff --git a/incubator/fireshare/3.0.0/Chart.yaml b/incubator/fireshare/3.0.0/Chart.yaml new file mode 100644 index 00000000000..c698a823f31 --- /dev/null +++ b/incubator/fireshare/3.0.0/Chart.yaml @@ -0,0 +1,35 @@ +kubeVersion: ">=1.24.0" +apiVersion: v2 +name: fireshare +version: 3.0.0 +appVersion: 1.2.15 +description: Share your game clips, videos, or other media via unique links. +home: https://truecharts.org/charts/incubator/fireshare +icon: https://truecharts.org/img/hotlink-ok/chart-icons/fireshare.png +deprecated: false +sources: + - https://github.com/ShaneIsrael/fireshare + - https://github.com/truecharts/charts/tree/master/charts/incubator/fireshare + - https://github.com/truecharts/containers/tree/master/mirrorfireshare +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +keywords: + - fireshare +dependencies: + - name: common + version: 15.3.1 + repository: https://library-charts.truecharts.org + condition: "" + alias: "" + tags: [] + import-values: [] +annotations: + max_scale_version: 23.10.1 + min_scale_version: 22.12.4 + truecharts.org/SCALE-support: "true" + truecharts.org/category: media + truecharts.org/max_helm_version: "3.13" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: incubator diff --git a/incubator/fireshare/3.0.0/README.md b/incubator/fireshare/3.0.0/README.md new file mode 100644 index 00000000000..83229a60265 --- /dev/null +++ b/incubator/fireshare/3.0.0/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/incubator/fireshare/3.0.0/app-changelog.md b/incubator/fireshare/3.0.0/app-changelog.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fireshare/3.0.0/app-readme.md b/incubator/fireshare/3.0.0/app-readme.md new file mode 100644 index 00000000000..3fc7f6f0507 --- /dev/null +++ b/incubator/fireshare/3.0.0/app-readme.md @@ -0,0 +1,8 @@ +Share your game clips, videos, or other media via unique links. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/fireshare](https://truecharts.org/charts/incubator/fireshare) + +--- + +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/fireshare/3.0.0/charts/common-15.3.1.tgz b/incubator/fireshare/3.0.0/charts/common-15.3.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f86383016c6dff36e8b4453907a8ecbfe86f0617 GIT binary patch literal 83855 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

-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 O0RR7LRYv^)t_lE1#;ThD literal 0 HcmV?d00001 diff --git a/incubator/fireshare/3.0.0/ix_values.yaml b/incubator/fireshare/3.0.0/ix_values.yaml new file mode 100644 index 00000000000..13cdf149bb9 --- /dev/null +++ b/incubator/fireshare/3.0.0/ix_values.yaml @@ -0,0 +1,46 @@ +image: + pullPolicy: IfNotPresent + repository: shaneisrael/fireshare + tag: 1.2.15@sha256:7b567c9c5b58b471700641a03bdb45d87fee1f18940e08d364c0b4d07a91b878 + +securityContext: + container: + readOnlyRootFilesystem: false + runAsUser: 0 + runAsGroup: 0 + +workload: + main: + podSpec: + containers: + main: + env: + SECRET_KEY: + secretKeyRef: + name: fireshare-secrets + key: SECRET_KEY + MINUTES_BETWEEN_VIDEO_SCANS: 5 + ADMIN_PASSWORD: "changeme" + +service: + main: + ports: + main: + port: 10287 + protocol: http + targetPort: 80 + +persistence: + data: + enabled: true + mountPath: /data + processeddata: + enabled: true + mountPath: /processed + videos: + enabled: true + mountPath: /videos + +portal: + open: + enabled: true diff --git a/incubator/fireshare/3.0.0/questions.yaml b/incubator/fireshare/3.0.0/questions.yaml new file mode 100644 index 00000000000..194261b83ef --- /dev/null +++ b/incubator/fireshare/3.0.0/questions.yaml @@ -0,0 +1,2647 @@ +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: env + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: ADMIN_PASSWORD + label: "ADMIN_PASSWORD" + description: "The admin account password" + schema: + type: string + default: "" + - variable: MINUTES_BETWEEN_VIDEO_SCANS + label: "MINUTES_BETWEEN_VIDEO_SCANS" + description: "How often in minutes Fireshare will scan for new videos" + schema: + type: int + default: 5 + - 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: 10287 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path 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: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + 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: videos + label: "videos Storage" + description: "This is where fireshare will look for videos that you want to share." + 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: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + 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: processeddata + label: "processeddata Storage" + description: "This is where data generated by fireshare related to your shared videos will live. If this is not mapped, whenever you update the container this data will be lost and will need to be regenerated. DO NOT EDIT OR CHANGE FILES IN THIS DIRECTORY." + 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: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + 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: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + 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: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: 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: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + 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: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + 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: certificateIssuer + label: certificateIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["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: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 0 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: 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: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + 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/fireshare/3.0.0/templates/_secrets.tpl b/incubator/fireshare/3.0.0/templates/_secrets.tpl new file mode 100644 index 00000000000..f180a8cf001 --- /dev/null +++ b/incubator/fireshare/3.0.0/templates/_secrets.tpl @@ -0,0 +1,13 @@ +{{/* Define the secrets */}} +{{- define "fireshare.secrets" -}} +{{- $secretName := (printf "%s-fireshare-secrets" (include "tc.v1.common.lib.chart.names.fullname" $)) }} + +{{- $secretKey := randAlphaNum 32 -}} + + {{- with lookup "v1" "Secret" .Release.Namespace $secretName -}} + {{- $secretKey = index .data "SECRET_KEY" | b64dec -}} + {{- end }} +enabled: true +data: + SECRET_KEY: {{ $secretKey }} +{{- end -}} diff --git a/incubator/fireshare/3.0.0/templates/common.yaml b/incubator/fireshare/3.0.0/templates/common.yaml new file mode 100644 index 00000000000..09377747a2f --- /dev/null +++ b/incubator/fireshare/3.0.0/templates/common.yaml @@ -0,0 +1,10 @@ +{{- include "tc.v1.common.loader.init" . -}} + +{{/* Render secrets for fireshare */}} +{{- $secrets := include "fireshare.secrets" . | fromYaml -}} +{{- if $secrets -}} + {{- $_ := set .Values.secret "fireshare-secrets" $secrets -}} +{{- end -}} + +{{/* Render the templates */}} +{{- include "tc.v1.common.loader.apply" . -}} diff --git a/incubator/fireshare/3.0.0/values.yaml b/incubator/fireshare/3.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/orbital-sync/3.0.0/CHANGELOG.md b/incubator/orbital-sync/3.0.0/CHANGELOG.md index b5fca68d4cc..7c465c70812 100644 --- a/incubator/orbital-sync/3.0.0/CHANGELOG.md +++ b/incubator/orbital-sync/3.0.0/CHANGELOG.md @@ -5,6 +5,7 @@ + ## [orbital-sync-2.0.10](https://github.com/truecharts/charts/compare/orbital-sync-2.0.9...orbital-sync-2.0.10) (2023-12-03) ### Chore @@ -96,4 +97,3 @@ ## [orbital-sync-2.0.3](https://github.com/truecharts/charts/compare/orbital-sync-2.0.2...orbital-sync-2.0.3) (2022-12-13) ### Chore -