diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..cf607c2b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,47 @@
+*.pyc
+*.swp
+*.mo
+*.o
+*.iso
+__pycache__
+*.xml
+*.pyc
+.cache
+.pytest_cache
+config.py
+auto_config.py
+.DS_Store
+.idea/
+.vscode/
+# IDE resources
+.vscode
+.idea
+.devcontainer/
+Gemfile.lock
+.ignore/
+/docs/api/_build/
+/docs/userguide/_build/
+/gui/local_settings.py
+gui/static/
+/FreeBSD/
+/filtered-patches/
+/os-base/
+/pbi/
+/sbin/
+src/middlewared/build/
+src/middlewared/dist/
+src/middlewared/middlewared.egg-info/
+.git-repo-setting
+nas_source/
+webui/node_modules/
+webui/dll/
+webui/dist/
+npm-debug.log
+tests/artifacts/
+tests/test-report.txt
+tests/test-report.xml
+private_values.yaml
+temp/
+library/common-test/charts/
+.cr-release-packages/
+library/common-test/chart.lock
diff --git a/.helmdocsignore b/.helmdocsignore
new file mode 100644
index 00000000..e69de29b
diff --git a/README.md b/README.md
index ac2e610d..52c27e1c 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,9 @@
# catalog_template
-Use this to start your own Basic Catalog
+Use this to start your own Basic TrueNAS SCALE Catalog
+
+It contains:
+
+- Base folder structure
+- Basic required files
+- 3 example Trains (charts, stable and test)
+- 1 example app in each train (each based on TrueCharts)
\ No newline at end of file
diff --git a/charts/syncthing/3.1.5/CONFIG.md b/charts/syncthing/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/charts/syncthing/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/charts/syncthing/3.1.5/Chart.lock b/charts/syncthing/3.1.5/Chart.lock
new file mode 100644
index 00000000..21034bcf
--- /dev/null
+++ b/charts/syncthing/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:42.632316521Z"
diff --git a/charts/syncthing/3.1.5/Chart.yaml b/charts/syncthing/3.1.5/Chart.yaml
new file mode 100644
index 00000000..f6f7c3bf
--- /dev/null
+++ b/charts/syncthing/3.1.5/Chart.yaml
@@ -0,0 +1,30 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: syncthing
+version: 3.1.5
+# upstream_version:
+appVersion: "auto"
+description: P2P file synchronization application
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/stable/syncthing
+icon: https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-128.png
+keywords:
+ - syncthing
+sources:
+ - https://syncthing.net/
+ - https://github.com/syncthing/syncthing
+ - https://hub.docker.com/r/syncthing/syncthing
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: luuknieuwdorp
+ email: luuk@nieuwdorp.me
+ url: nieuwdorp.me
+# annotations:
diff --git a/charts/syncthing/3.1.5/README.md b/charts/syncthing/3.1.5/README.md
new file mode 100644
index 00000000..fdc91d9c
--- /dev/null
+++ b/charts/syncthing/3.1.5/README.md
@@ -0,0 +1,55 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+P2P file synchronization application
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `syncthing`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `syncthing` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/charts/syncthing/3.1.5/app-readme.md b/charts/syncthing/3.1.5/app-readme.md
new file mode 100644
index 00000000..7eaa0780
--- /dev/null
+++ b/charts/syncthing/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+P2P file synchronization application
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+P2P file synchronization application
diff --git a/charts/syncthing/3.1.5/charts/common-3.5.5.tgz b/charts/syncthing/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/charts/syncthing/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/charts/syncthing/3.1.5/ix_values.yaml b/charts/syncthing/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..2c38d653
--- /dev/null
+++ b/charts/syncthing/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: syncthing/syncthing
+ pullPolicy: IfNotPresent
+ tag: 1.16
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/charts/syncthing/3.1.5/questions.yaml b/charts/syncthing/3.1.5/questions.yaml
new file mode 100644
index 00000000..9110b80d
--- /dev/null
+++ b/charts/syncthing/3.1.5/questions.yaml
@@ -0,0 +1,418 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "Container port"
+ schema:
+ type: int
+ default: 8384
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8384
+ editable: false
+ hidden: true
+ # - variable: nodePort
+ # label: "Host nodePort to expose to (optional)"
+ # description: "Only gets used when nodePort is selected"
+ # schema:
+ # type: int
+ # min: 9000
+ # max: 65535
+ # default: 36024
+ # required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/var/syncthing"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/charts/syncthing/3.1.5/templates/common.yaml b/charts/syncthing/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/charts/syncthing/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/charts/syncthing/3.1.5/test_values.yaml b/charts/syncthing/3.1.5/test_values.yaml
new file mode 100644
index 00000000..b0677868
--- /dev/null
+++ b/charts/syncthing/3.1.5/test_values.yaml
@@ -0,0 +1,23 @@
+# Default values for Syncthing.
+
+image:
+ repository: syncthing/syncthing
+ pullPolicy: IfNotPresent
+ tag: 1.16
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 8384
+
+persistence:
+ config:
+ enabled: true
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
+ mountPath: "/var/syncthing/"
diff --git a/charts/syncthing/3.1.5/values.yaml b/charts/syncthing/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/charts/syncthing/item.yaml b/charts/syncthing/item.yaml
new file mode 100644
index 00000000..62634b42
--- /dev/null
+++ b/charts/syncthing/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-128.png
diff --git a/features_capability.json b/features_capability.json
new file mode 100644
index 00000000..14b386c7
--- /dev/null
+++ b/features_capability.json
@@ -0,0 +1,42 @@
+{
+ "normalize/interfaceConfiguration": {
+ "stable": {"min": "20.12-ALPHA"},
+ "nightlies": {"min": "20.10-MASTER-somever"}
+ },
+ "normalize/ixVolume": {
+ "stable": {"min": "20.12-ALPHA"},
+ "nightlies": {"min": "20.10-MASTER-somever"}
+ },
+ "definitions/interface": {
+ "stable": {"min": "20.12-ALPHA"},
+ "nightlies": {"min": "20.10-MASTER-somever"}
+ },
+ "definitions/gpuConfiguration": {
+ "stable": {"min": "20.12-ALPHA"},
+ "nightlies": {"min": "20.10-MASTER-somever"}
+ },
+ "definitions/timezone": {
+ "stable": {"min": "20.12-ALPHA"},
+ "nightlies": {"min": "20.12-MASTER"}
+ },
+ "definitions/nodeIP": {
+ "stable": {"min": "20.12-ALPHA"},
+ "nightlies": {"min": "20.12-MASTER"}
+ },
+ "definitions/certificate": {
+ "stable": {"min": "21.04-ALPHA"},
+ "nightlies": {"min": "21.02-MASTER"}
+ },
+ "definitions/certificateAuthority": {
+ "stable": {"min": "21.04-ALPHA"},
+ "nightlies": {"min": "21.02-MASTER"}
+ },
+ "validations/containerImage": {
+ "stable": {"min": "21.06-BETA"},
+ "nightlies": {"min": "21.04-MASTER"}
+ },
+ "validations/nodePort": {
+ "stable": {"min": "21.04-ALPHA"},
+ "nightlies": {"min": "21.04-MASTER"}
+ }
+}
diff --git a/stable/jackett/3.1.5/CONFIG.md b/stable/jackett/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/stable/jackett/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/stable/jackett/3.1.5/Chart.lock b/stable/jackett/3.1.5/Chart.lock
new file mode 100644
index 00000000..a225c6db
--- /dev/null
+++ b/stable/jackett/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:38.578257131Z"
diff --git a/stable/jackett/3.1.5/Chart.yaml b/stable/jackett/3.1.5/Chart.yaml
new file mode 100644
index 00000000..e29da188
--- /dev/null
+++ b/stable/jackett/3.1.5/Chart.yaml
@@ -0,0 +1,33 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: jackett
+version: 3.1.5
+upstream_version: 7.0.1
+appVersion: "auto"
+description: API Support for your favorite torrent trackers.
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/stable/jackett
+icon: https://truecharts.org/_static/img/jackett-icon.png
+keywords:
+ - jackett
+ - torrent
+ - usenet
+sources:
+ - https://github.com/truecharts/apps/tree/master/stable/jackett
+ - https://github.com/k8s-at-home/charts/tree/master/charts/jackett
+ - https://github.com/Jackett/Jackett
+ - https://hub.docker.com/r/linuxserver/jackett
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: Ornias1993
+ email: kjeld@schouten-lebbing.nl
+ url: truecharts.org
+# annotations:
diff --git a/stable/jackett/3.1.5/README.md b/stable/jackett/3.1.5/README.md
new file mode 100644
index 00000000..88c3c913
--- /dev/null
+++ b/stable/jackett/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+API Support for your favorite torrent trackers.
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `jackett`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `jackett` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/stable/jackett/3.1.5/app-readme.md b/stable/jackett/3.1.5/app-readme.md
new file mode 100644
index 00000000..7e8f54af
--- /dev/null
+++ b/stable/jackett/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+API Support for your favorite torrent trackers.
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+API Support for your favorite torrent trackers.
diff --git a/stable/jackett/3.1.5/charts/common-3.5.5.tgz b/stable/jackett/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/stable/jackett/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/stable/jackett/3.1.5/ix_values.yaml b/stable/jackett/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..99acca3a
--- /dev/null
+++ b/stable/jackett/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ghcr.io/truecharts/jackett
+ pullPolicy: IfNotPresent
+ tag: v0.17.1011
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/stable/jackett/3.1.5/questions.yaml b/stable/jackett/3.1.5/questions.yaml
new file mode 100644
index 00000000..6de48d7f
--- /dev/null
+++ b/stable/jackett/3.1.5/questions.yaml
@@ -0,0 +1,434 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 9117
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 9117
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36009
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/stable/jackett/3.1.5/templates/common.yaml b/stable/jackett/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/stable/jackett/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/stable/jackett/3.1.5/test_values.yaml b/stable/jackett/3.1.5/test_values.yaml
new file mode 100644
index 00000000..77ee8243
--- /dev/null
+++ b/stable/jackett/3.1.5/test_values.yaml
@@ -0,0 +1,46 @@
+# Default values for Jackett.
+
+image:
+ repository: ghcr.io/truecharts/jackett
+ pullPolicy: IfNotPresent
+ tag: v0.17.1011
+
+strategy:
+ type: Recreate
+
+
+services:
+ main:
+ enabled: true
+ port:
+ port: 9117
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
+
+
+## TrueCharts Values
+
+ingress:
+ main:
+ enabled: true
+ # Used when including ingress using {{ include "common.ingress" . }}
+ type: "HTTP"
+ entrypoint: "websecure"
+ certType: ""
+ annotations: {}
+ hosts:
+ - host: chart-example.local
+ path: /
diff --git a/stable/jackett/3.1.5/values.yaml b/stable/jackett/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/stable/jackett/item.yaml b/stable/jackett/item.yaml
new file mode 100644
index 00000000..8d747307
--- /dev/null
+++ b/stable/jackett/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://truecharts.org/_static/img/jackett-icon.png
diff --git a/test/appdaemon/0.1.3/CONFIG.md b/test/appdaemon/0.1.3/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/appdaemon/0.1.3/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/appdaemon/0.1.3/Chart.lock b/test/appdaemon/0.1.3/Chart.lock
new file mode 100644
index 00000000..acfc21b3
--- /dev/null
+++ b/test/appdaemon/0.1.3/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:46.438162658Z"
diff --git a/test/appdaemon/0.1.3/Chart.yaml b/test/appdaemon/0.1.3/Chart.yaml
new file mode 100644
index 00000000..b542ea4e
--- /dev/null
+++ b/test/appdaemon/0.1.3/Chart.yaml
@@ -0,0 +1,26 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: appdaemon
+version: 0.1.3
+appVersion: v4.0.8
+description: AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets.
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/appdaemon
+icon: https://github.com/hassio-addons/addon-appdaemon/blob/main/appdaemon/icon.png?raw=true
+keywords:
+ - appdaemon
+ - homeautomation
+sources:
+ - https://github.com/AppDaemon/appdaemon
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: warllo54
+ email: 20650065+warllo54@users.noreply.github.com
+ url: truecharts.org
diff --git a/test/appdaemon/0.1.3/README.md b/test/appdaemon/0.1.3/README.md
new file mode 100644
index 00000000..ac652fbf
--- /dev/null
+++ b/test/appdaemon/0.1.3/README.md
@@ -0,0 +1,53 @@
+# Introduction
+
+![Version: 0.1.3](https://img.shields.io/badge/Version-0.1.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v4.0.8](https://img.shields.io/badge/AppVersion-v4.0.8-informational?style=flat-square)
+
+AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets.
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `appdaemon`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `appdaemon` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/appdaemon/0.1.3/app-readme.md b/test/appdaemon/0.1.3/app-readme.md
new file mode 100644
index 00000000..b948120c
--- /dev/null
+++ b/test/appdaemon/0.1.3/app-readme.md
@@ -0,0 +1,3 @@
+AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets.
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets.
diff --git a/test/appdaemon/0.1.3/charts/common-3.5.5.tgz b/test/appdaemon/0.1.3/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/appdaemon/0.1.3/charts/common-3.5.5.tgz differ
diff --git a/test/appdaemon/0.1.3/ix_values.yaml b/test/appdaemon/0.1.3/ix_values.yaml
new file mode 100644
index 00000000..ef02d27c
--- /dev/null
+++ b/test/appdaemon/0.1.3/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: acockburn/appdaemon
+ pullPolicy: IfNotPresent
+ tag: "4.0.8"
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/appdaemon/0.1.3/questions.yaml b/test/appdaemon/0.1.3/questions.yaml
new file mode 100644
index 00000000..eae94631
--- /dev/null
+++ b/test/appdaemon/0.1.3/questions.yaml
@@ -0,0 +1,431 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Docker specific env
+ - variable: env
+ group: "Configuration"
+ label: "Image Environment"
+ schema:
+ type: dict
+ attrs:
+ - variable: HA_URL
+ label: "HA URL"
+ description: "Your HomeAssistant URL"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: TOKEN
+ label: "HA Token"
+ description: "Your HomeAssistant Token"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: DASH_URL
+ label: "Dashboard URL"
+ description: "URL of your appdaemon dashboard"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: LATITUDE
+ label: "Latitude"
+ description: "Latitude of your home assistant instance"
+ schema:
+ type: int
+ default: 0
+ required: true
+ - variable: LONGITUDE
+ label: "Longitude"
+ description: "Longitude of your home assistant instance"
+ schema:
+ type: int
+ default: 0
+ required: true
+ - variable: ELEVATION
+ label: "Elevation"
+ description: "Longitude of your home assistant instance"
+ schema:
+ type: int
+ default: 0
+ required: true
+
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 5050
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 51050
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36052
+ required: true
+## TrueCharts Specific
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "selfsigned"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/appdaemon/0.1.3/templates/common.yaml b/test/appdaemon/0.1.3/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/appdaemon/0.1.3/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/appdaemon/0.1.3/test_values.yaml b/test/appdaemon/0.1.3/test_values.yaml
new file mode 100644
index 00000000..031febf0
--- /dev/null
+++ b/test/appdaemon/0.1.3/test_values.yaml
@@ -0,0 +1,40 @@
+image:
+ repository: ghcr.io/truecharts/appdaemon
+ pullPolicy: IfNotPresent
+ tag: "v4.0.8"
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: true
+ runAsUser: 568
+ runAsGroup: 568
+ fsGroup: 568
+
+timezone: "America/Chicago"
+
+env:
+ LATITUDE: 46
+ LONGITUDE: -94
+ ELEVATION: 1217
+ DASH_URL: "http://0.0.0.0:5050"
+
+services:
+ main:
+ port:
+ port: 5050
+ tcp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 51050
+ protocol: TCP
+ targetPort: 51050
+
+customStorage:
+ - name: config
+ enabled: true
+ mountPath: /conf
+ emptyDir: true
diff --git a/test/appdaemon/0.1.3/values.yaml b/test/appdaemon/0.1.3/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/appdaemon/item.yaml b/test/appdaemon/item.yaml
new file mode 100644
index 00000000..4f0aa859
--- /dev/null
+++ b/test/appdaemon/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - utilities
+icon_url: https://github.com/hassio-addons/addon-appdaemon/blob/main/appdaemon/logo.png?raw=true
diff --git a/test/bazarr/3.1.5/CONFIG.md b/test/bazarr/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/bazarr/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/bazarr/3.1.5/Chart.lock b/test/bazarr/3.1.5/Chart.lock
new file mode 100644
index 00000000..ecc7d8d0
--- /dev/null
+++ b/test/bazarr/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:46.949866373Z"
diff --git a/test/bazarr/3.1.5/Chart.yaml b/test/bazarr/3.1.5/Chart.yaml
new file mode 100644
index 00000000..0737efb2
--- /dev/null
+++ b/test/bazarr/3.1.5/Chart.yaml
@@ -0,0 +1,36 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: bazarr
+version: 3.1.5
+upstream_version: 5.2.1
+appVersion: "auto"
+description: Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/bazarr
+icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bazarr.png
+keywords:
+ - bazarr
+ - radarr
+ - bazarr
+ - subtitles
+ - usenet
+ - torrent
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/bazarr
+ - https://github.com/k8s-at-home/charts/tree/master/charts/bazarr
+ - https://github.com/Bazarr/Bazarr
+ - https://hub.docker.com/r/linuxserver/bazarr
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: Ornias1993
+ email: kjeld@schouten-lebbing.nl
+ url: truecharts.org
+# annotations:
diff --git a/test/bazarr/3.1.5/README.md b/test/bazarr/3.1.5/README.md
new file mode 100644
index 00000000..97a3c184
--- /dev/null
+++ b/test/bazarr/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `bazarr`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `bazarr` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/bazarr/3.1.5/app-readme.md b/test/bazarr/3.1.5/app-readme.md
new file mode 100644
index 00000000..2d112915
--- /dev/null
+++ b/test/bazarr/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements
diff --git a/test/bazarr/3.1.5/charts/common-3.5.5.tgz b/test/bazarr/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/bazarr/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/bazarr/3.1.5/ix_values.yaml b/test/bazarr/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..e6a02921
--- /dev/null
+++ b/test/bazarr/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ghcr.io/truecharts/bazarr
+ pullPolicy: IfNotPresent
+ tag: v0.9.3-beta.9
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/bazarr/3.1.5/questions.yaml b/test/bazarr/3.1.5/questions.yaml
new file mode 100644
index 00000000..3ed15945
--- /dev/null
+++ b/test/bazarr/3.1.5/questions.yaml
@@ -0,0 +1,436 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 6767
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 6767
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36025
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/bazarr/3.1.5/templates/common.yaml b/test/bazarr/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/bazarr/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/bazarr/3.1.5/test_values.yaml b/test/bazarr/3.1.5/test_values.yaml
new file mode 100644
index 00000000..6994e190
--- /dev/null
+++ b/test/bazarr/3.1.5/test_values.yaml
@@ -0,0 +1,28 @@
+# Default values for Bazarr.
+
+image:
+ repository: ghcr.io/truecharts/bazarr
+ pullPolicy: IfNotPresent
+ tag: v0.9.3-beta.9
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 6767
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/bazarr/3.1.5/values.yaml b/test/bazarr/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/bazarr/item.yaml b/test/bazarr/item.yaml
new file mode 100644
index 00000000..06f251b3
--- /dev/null
+++ b/test/bazarr/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bazarr.png
diff --git a/test/calibre-web/3.1.5/CONFIG.md b/test/calibre-web/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/calibre-web/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/calibre-web/3.1.5/Chart.lock b/test/calibre-web/3.1.5/Chart.lock
new file mode 100644
index 00000000..dcf93a0d
--- /dev/null
+++ b/test/calibre-web/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:47.41843612Z"
diff --git a/test/calibre-web/3.1.5/Chart.yaml b/test/calibre-web/3.1.5/Chart.yaml
new file mode 100644
index 00000000..aa7b65d1
--- /dev/null
+++ b/test/calibre-web/3.1.5/Chart.yaml
@@ -0,0 +1,30 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: calibre-web
+version: 3.1.5
+upstream_version: 4.3.1
+appVersion: "auto"
+description: Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/calibre-web
+icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png
+keywords:
+ - calibre-web
+ - calibre
+ - ebook
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/calibre-web
+ - https://github.com/k8s-at-home/charts/tree/master/charts/calibre-web
+ - https://hub.docker.com/r/linuxserver/calibre-web/
+ - https://github.com/janeczku/calibre-web
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/calibre-web/3.1.5/README.md b/test/calibre-web/3.1.5/README.md
new file mode 100644
index 00000000..f0442d6f
--- /dev/null
+++ b/test/calibre-web/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `calibre-web`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `calibre-web` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/calibre-web/3.1.5/app-readme.md b/test/calibre-web/3.1.5/app-readme.md
new file mode 100644
index 00000000..6c20a1a3
--- /dev/null
+++ b/test/calibre-web/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
diff --git a/test/calibre-web/3.1.5/charts/common-3.5.5.tgz b/test/calibre-web/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/calibre-web/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/calibre-web/3.1.5/ix_values.yaml b/test/calibre-web/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..5e42c4a5
--- /dev/null
+++ b/test/calibre-web/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: linuxserver/calibre-web
+ pullPolicy: IfNotPresent
+ tag: version-0.6.11
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/calibre-web/3.1.5/questions.yaml b/test/calibre-web/3.1.5/questions.yaml
new file mode 100644
index 00000000..9039761f
--- /dev/null
+++ b/test/calibre-web/3.1.5/questions.yaml
@@ -0,0 +1,449 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8083
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8083
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36015
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/calibre-web/3.1.5/templates/common.yaml b/test/calibre-web/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/calibre-web/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/calibre-web/3.1.5/test_values.yaml b/test/calibre-web/3.1.5/test_values.yaml
new file mode 100644
index 00000000..5e2636af
--- /dev/null
+++ b/test/calibre-web/3.1.5/test_values.yaml
@@ -0,0 +1,37 @@
+# Default values for Calibre-Web.
+
+image:
+ repository: linuxserver/calibre-web
+ pullPolicy: IfNotPresent
+ tag: version-0.6.11
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 8083
+
+env: {}
+ # TZ:
+ # PUID:
+ # PGID:
+ # UMASK:
+ # DOCKER_MODS:
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/calibre-web/3.1.5/values.yaml b/test/calibre-web/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/calibre-web/item.yaml b/test/calibre-web/item.yaml
new file mode 100644
index 00000000..73a1a5a7
--- /dev/null
+++ b/test/calibre-web/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png
diff --git a/test/deluge/3.1.5/CONFIG.md b/test/deluge/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/deluge/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/deluge/3.1.5/Chart.lock b/test/deluge/3.1.5/Chart.lock
new file mode 100644
index 00000000..319c29a1
--- /dev/null
+++ b/test/deluge/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:47.885553069Z"
diff --git a/test/deluge/3.1.5/Chart.yaml b/test/deluge/3.1.5/Chart.yaml
new file mode 100644
index 00000000..d2f93d61
--- /dev/null
+++ b/test/deluge/3.1.5/Chart.yaml
@@ -0,0 +1,28 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: deluge
+version: 3.1.5
+# upstream_version:
+appVersion: "auto"
+description: Deluge App for TrueNAS SCALE
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/deluge
+icon: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200
+keywords:
+ - transmission
+ - torrent
+ - usenet
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/deluge
+ - https://github.com/deluge-torrent/deluge
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/deluge/3.1.5/README.md b/test/deluge/3.1.5/README.md
new file mode 100644
index 00000000..bfcbb4e5
--- /dev/null
+++ b/test/deluge/3.1.5/README.md
@@ -0,0 +1,54 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Deluge App for TrueNAS SCALE
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `deluge`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `deluge` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/deluge/3.1.5/app-readme.md b/test/deluge/3.1.5/app-readme.md
new file mode 100644
index 00000000..0bce0f81
--- /dev/null
+++ b/test/deluge/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Deluge App for TrueNAS SCALE
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Deluge App for TrueNAS SCALE
diff --git a/test/deluge/3.1.5/charts/common-3.5.5.tgz b/test/deluge/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/deluge/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/deluge/3.1.5/ix_values.yaml b/test/deluge/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..14051dce
--- /dev/null
+++ b/test/deluge/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: linuxserver/deluge
+ pullPolicy: IfNotPresent
+ tag: version-2.0.3-2201906121747ubuntu18.04.1
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/deluge/3.1.5/questions.yaml b/test/deluge/3.1.5/questions.yaml
new file mode 100644
index 00000000..d4db5c6e
--- /dev/null
+++ b/test/deluge/3.1.5/questions.yaml
@@ -0,0 +1,571 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+## Portal Button
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+## Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+## Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Australia/Hobart"
+ $ref:
+ - "definitions/timezone"
+
+## Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+## Enable Host Network
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Network"
+ schema:
+ type: boolean
+ default: false
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8112
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8112
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36026
+ required: true
+ - variable: tcp
+ label: ""
+ description: "TCP port for Torrent Connections"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable TCP port for Torrent Connections"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "port name"
+ schema:
+ type: string
+ default: "torrent-tcp"
+ hidden: true
+ - variable: protocol
+ label: "Protocol"
+ schema:
+ type: string
+ default: "TCP"
+ hidden: true
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 51413
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "container targetport"
+ schema:
+ type: int
+ default: 51413
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "Node Port to expose"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 51413
+ required: false
+ - variable: udp
+ label: ""
+ description: "UDP port for Torrent Connections"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable UDP port for Torrent Connections"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "port name"
+ schema:
+ type: string
+ default: "torrent-udp"
+ hidden: true
+ - variable: protocol
+ label: "Protocol"
+ schema:
+ type: string
+ default: "UDP"
+ hidden: true
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 51413
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "container targetport"
+ schema:
+ type: int
+ default: 51413
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "Node Port to expose"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 51413
+ required: false
+
+## Ingres
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/deluge/3.1.5/templates/common.yaml b/test/deluge/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/deluge/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/deluge/3.1.5/test_values.yaml b/test/deluge/3.1.5/test_values.yaml
new file mode 100644
index 00000000..127213f2
--- /dev/null
+++ b/test/deluge/3.1.5/test_values.yaml
@@ -0,0 +1,44 @@
+# Default values for deluge.
+
+image:
+ repository: linuxserver/deluge
+ pullPolicy: IfNotPresent
+ tag: version-2.0.3-2201906121747ubuntu18.04.1
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 8112
+ tcp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 51413
+ protocol: TCP
+ targetPort: 51413
+ udp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 51413
+ protocol: UDP
+ targetPort: 51413
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/deluge/3.1.5/values.yaml b/test/deluge/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/deluge/item.yaml b/test/deluge/item.yaml
new file mode 100644
index 00000000..0a1a793e
--- /dev/null
+++ b/test/deluge/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200
diff --git a/test/fireflyiii/1.0.1/CONFIG.md b/test/fireflyiii/1.0.1/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/fireflyiii/1.0.1/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/fireflyiii/1.0.1/Chart.lock b/test/fireflyiii/1.0.1/Chart.lock
new file mode 100644
index 00000000..49f381fc
--- /dev/null
+++ b/test/fireflyiii/1.0.1/Chart.lock
@@ -0,0 +1,9 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+- name: postgresql
+ repository: https://charts.bitnami.com/bitnami
+ version: 10.4.2
+digest: sha256:feb1c5155f10c340b5a984ce39eb7c532c938ac71287bfa65398ef3fe458c902
+generated: "2021-05-06T13:29:51.104635038Z"
diff --git a/test/fireflyiii/1.0.1/Chart.yaml b/test/fireflyiii/1.0.1/Chart.yaml
new file mode 100644
index 00000000..9ece33f5
--- /dev/null
+++ b/test/fireflyiii/1.0.1/Chart.yaml
@@ -0,0 +1,30 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: fireflyiii
+version: 1.0.1
+appVersion: "auto"
+description: A free and open source personal finance manager
+type: application
+deprecated: false
+home: https://github.com/firefly-iii/firefly-iii/
+icon: https://www.firefly-iii.org/assets/logo/color.png
+keywords:
+ - fireflyiii
+ - finacial
+sources:
+ - https://github.com/firefly-iii/firefly-iii/
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ - name: postgresql
+ version: 10.4.2
+ repository: https://charts.bitnami.com/bitnami
+ condition: postgresql.enabled
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: warllo54
+ email: 20650065+warllo54@users.noreply.github.com
+ url: truecharts.org
diff --git a/test/fireflyiii/1.0.1/README.md b/test/fireflyiii/1.0.1/README.md
new file mode 100644
index 00000000..8e87f22a
--- /dev/null
+++ b/test/fireflyiii/1.0.1/README.md
@@ -0,0 +1,54 @@
+# Introduction
+
+![Version: 1.0.1](https://img.shields.io/badge/Version-1.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+A free and open source personal finance manager
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://charts.bitnami.com/bitnami | postgresql | 10.4.2 |
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `fireflyiii`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `fireflyiii` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/fireflyiii/1.0.1/app-readme.md b/test/fireflyiii/1.0.1/app-readme.md
new file mode 100644
index 00000000..15307675
--- /dev/null
+++ b/test/fireflyiii/1.0.1/app-readme.md
@@ -0,0 +1,3 @@
+A free and open source personal finance manager
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+A free and open source personal finance manager
diff --git a/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz b/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz differ
diff --git a/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz b/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz
new file mode 100644
index 00000000..1067fe42
Binary files /dev/null and b/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz differ
diff --git a/test/fireflyiii/1.0.1/ix_values.yaml b/test/fireflyiii/1.0.1/ix_values.yaml
new file mode 100644
index 00000000..ee3a8213
--- /dev/null
+++ b/test/fireflyiii/1.0.1/ix_values.yaml
@@ -0,0 +1,41 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: jc5x/firefly-iii
+ pullPolicy: IfNotPresent
+ tag: latest
+
+env:
+ DB_USERNAME: fireflyiii
+ DB_DATABASE: fireflyiii
+ DB_CONNECTION: pgsql
+ DB_PORT: 5432
+
+envValueFrom:
+ DB_HOST:
+ secretKeyRef:
+ name: dbcreds
+ key: postgresql_host
+ DB_PASSWORD:
+ secretKeyRef:
+ name: dbcreds
+ key: postgresql-password
+
+# Enabled postgres
+# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql
+postgresql:
+ enabled: true
+ postgresqlUsername: fireflyiii
+ postgresqlDatabase: fireflyiii
+ existingSecret: dbcreds
+ persistence:
+ enabled: true
+ existingClaim: db
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/fireflyiii/1.0.1/questions.yaml b/test/fireflyiii/1.0.1/questions.yaml
new file mode 100644
index 00000000..f2ebe1aa
--- /dev/null
+++ b/test/fireflyiii/1.0.1/questions.yaml
@@ -0,0 +1,562 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ # Docker specific env
+ - variable: env
+ group: "Configuration"
+ label: "Image Environment"
+ schema:
+ type: dict
+ attrs:
+ - variable: APP_KEY
+ label: "App Key"
+ description: "Your unique 32 application character key"
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 51080
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36048
+ required: true
+
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: data
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/data"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: db
+ label: "Database Storage"
+ description: "Stores the Application database."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: nameOverride
+ label: "Override PVC Name (advanced)"
+ description: "Forces a certain name for the PVC"
+ schema:
+ type: string
+ default: "db"
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: ""
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: dbbackup
+ label: "Database Backup Storage"
+ description: "Stores the Application database backups."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: ""
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 0
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 0
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/fireflyiii/1.0.1/templates/common.yaml b/test/fireflyiii/1.0.1/templates/common.yaml
new file mode 100644
index 00000000..64e027ac
--- /dev/null
+++ b/test/fireflyiii/1.0.1/templates/common.yaml
@@ -0,0 +1,5 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "common.values.setup" . }}
+
+{{/* Render the templates */}}
+{{ include "common.all" . }}
diff --git a/test/fireflyiii/1.0.1/templates/secrets.yaml b/test/fireflyiii/1.0.1/templates/secrets.yaml
new file mode 100644
index 00000000..2227b0eb
--- /dev/null
+++ b/test/fireflyiii/1.0.1/templates/secrets.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ labels:
+ {{- include "common.labels" . | nindent 4 }}
+ name: dbcreds
+{{- $previous := lookup "v1" "Secret" .Release.Namespace "dbcreds" }}
+{{- $dbPass := "" }}
+data:
+{{- if $previous }}
+ {{- $dbPass = ( index $previous.data "postgresql-password" ) | b64dec }}
+ postgresql-password: {{ ( index $previous.data "postgresql-password" ) }}
+ postgresql-postgres-password: {{ ( index $previous.data "postgresql-postgres-password" ) }}
+{{- else }}
+ {{- $dbPass = randAlphaNum 50 }}
+ postgresql-password: {{ $dbPass | b64enc | quote }}
+ postgresql-postgres-password: {{ randAlphaNum 50 | b64enc | quote }}
+{{- end }}
+ url: {{ ( printf "%v%v:%v@%v-%v:%v/%v" "postgresql://" .Values.postgresql.postgresqlUsername $dbPass .Release.Name "postgresql" "5432" .Values.postgresql.postgresqlDatabase ) | b64enc | quote }}
+ postgresql_host: {{ ( printf "%v-%v" .Release.Name "postgresql" ) | b64enc | quote }}
+type: Opaque
diff --git a/test/fireflyiii/1.0.1/test_values.yaml b/test/fireflyiii/1.0.1/test_values.yaml
new file mode 100644
index 00000000..7c5ca267
--- /dev/null
+++ b/test/fireflyiii/1.0.1/test_values.yaml
@@ -0,0 +1,78 @@
+# Default values for Bitwarden.
+
+image:
+ repository: jc5x/firefly-iii
+ pullPolicy: IfNotPresent
+ tag: latest
+
+strategy:
+ type: Recreate
+
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 8080
+ tcp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 51080
+ protocol: TCP
+ targetPort: 51080
+
+env:
+ DB_USERNAME: firefly
+ DB_DATABASE: firefly
+ DB_CONNECTION: pgsql
+ DB_PORT: 5432
+ APP_Key: AGcfkCUS233ZWmBXztYbdyCs2u7kkz55
+
+envValueFrom:
+ DB_HOST:
+ secretKeyRef:
+ name: dbcreds
+ key: url
+ DB_PASSWORD:
+ secretKeyRef:
+ name: dbcreds
+ key: postgresql-password
+
+persistence:
+ data:
+ enabled: true
+ mountPath: "/var/www/html/storage/upload"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
+ db:
+ nameOverride: "db"
+ enabled: true
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
+ dbbackup:
+ enabled: true
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
+
+
+# Enabled postgres
+# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql
+postgresql:
+ enabled: true
+ postgresqlUsername: firefly
+ postgresqlDatabase: firefly
+ existingSecret: dbcreds
+ persistence:
+ enabled: false
+ existingClaim: db
diff --git a/test/fireflyiii/1.0.1/values.yaml b/test/fireflyiii/1.0.1/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fireflyiii/item.yaml b/test/fireflyiii/item.yaml
new file mode 100644
index 00000000..1cbbc68a
--- /dev/null
+++ b/test/fireflyiii/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - finacial
+icon_url: https://www.firefly-iii.org/assets/logo/color.png
diff --git a/test/freshrss/3.1.5/CONFIG.md b/test/freshrss/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/freshrss/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/freshrss/3.1.5/Chart.lock b/test/freshrss/3.1.5/Chart.lock
new file mode 100644
index 00000000..0d2e642f
--- /dev/null
+++ b/test/freshrss/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:54.451281697Z"
diff --git a/test/freshrss/3.1.5/Chart.yaml b/test/freshrss/3.1.5/Chart.yaml
new file mode 100644
index 00000000..89a2f7d6
--- /dev/null
+++ b/test/freshrss/3.1.5/Chart.yaml
@@ -0,0 +1,29 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: freshrss
+version: 3.1.5
+upstream_version: 2.3.1
+appVersion: "auto"
+description: FreshRSS is a self-hosted RSS feed aggregator
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/freshrss
+icon: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true
+keywords:
+ - freshrss
+ - rss
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/freshrss
+ - https://github.com/k8s-at-home/charts/tree/master/charts/freshrss
+ - https://github.com/FreshRSS/FreshRSS
+ - https://hub.docker.com/r/linuxserver/freshrss
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/freshrss/3.1.5/README.md b/test/freshrss/3.1.5/README.md
new file mode 100644
index 00000000..b8d65a65
--- /dev/null
+++ b/test/freshrss/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+FreshRSS is a self-hosted RSS feed aggregator
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `freshrss`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `freshrss` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/freshrss/3.1.5/app-readme.md b/test/freshrss/3.1.5/app-readme.md
new file mode 100644
index 00000000..7d8a844b
--- /dev/null
+++ b/test/freshrss/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+FreshRSS is a self-hosted RSS feed aggregator
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+FreshRSS is a self-hosted RSS feed aggregator
diff --git a/test/freshrss/3.1.5/charts/common-3.5.5.tgz b/test/freshrss/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/freshrss/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/freshrss/3.1.5/ix_values.yaml b/test/freshrss/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..9de79c78
--- /dev/null
+++ b/test/freshrss/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: linuxserver/freshrss
+ pullPolicy: IfNotPresent
+ tag: version-1.18.0
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/freshrss/3.1.5/questions.yaml b/test/freshrss/3.1.5/questions.yaml
new file mode 100644
index 00000000..ffb0a95d
--- /dev/null
+++ b/test/freshrss/3.1.5/questions.yaml
@@ -0,0 +1,451 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36029
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/freshrss/3.1.5/templates/common.yaml b/test/freshrss/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/freshrss/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/freshrss/3.1.5/test_values.yaml b/test/freshrss/3.1.5/test_values.yaml
new file mode 100644
index 00000000..4c31242e
--- /dev/null
+++ b/test/freshrss/3.1.5/test_values.yaml
@@ -0,0 +1,35 @@
+# Default values for FreshRSS.
+
+image:
+ repository: linuxserver/freshrss
+ pullPolicy: IfNotPresent
+ tag: version-1.18.0
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 80
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/freshrss/3.1.5/values.yaml b/test/freshrss/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/freshrss/item.yaml b/test/freshrss/item.yaml
new file mode 100644
index 00000000..b77c41d4
--- /dev/null
+++ b/test/freshrss/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true
diff --git a/test/gaps/3.1.5/CONFIG.md b/test/gaps/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/gaps/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/gaps/3.1.5/Chart.lock b/test/gaps/3.1.5/Chart.lock
new file mode 100644
index 00000000..f4952b7c
--- /dev/null
+++ b/test/gaps/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:54.917308943Z"
diff --git a/test/gaps/3.1.5/Chart.yaml b/test/gaps/3.1.5/Chart.yaml
new file mode 100644
index 00000000..8e4a8f97
--- /dev/null
+++ b/test/gaps/3.1.5/Chart.yaml
@@ -0,0 +1,29 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: gaps
+version: 3.1.5
+upstream_version: 1.1.1
+appVersion: "auto"
+description: Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection.
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/gaps
+icon: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png
+keywords:
+ - gaps
+ - plex
+ - plex-media-server
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/gaps
+ - https://github.com/k8s-at-home/charts/tree/master/charts/gaps
+ - https://github.com/JasonHHouse/gaps
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/gaps/3.1.5/README.md b/test/gaps/3.1.5/README.md
new file mode 100644
index 00000000..c5ab0643
--- /dev/null
+++ b/test/gaps/3.1.5/README.md
@@ -0,0 +1,55 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection.
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `gaps`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `gaps` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/gaps/3.1.5/app-readme.md b/test/gaps/3.1.5/app-readme.md
new file mode 100644
index 00000000..25aa9e69
--- /dev/null
+++ b/test/gaps/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection.
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection.
diff --git a/test/gaps/3.1.5/charts/common-3.5.5.tgz b/test/gaps/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/gaps/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/gaps/3.1.5/ix_values.yaml b/test/gaps/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..d1117766
--- /dev/null
+++ b/test/gaps/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: housewrecker/gaps
+ pullPolicy: IfNotPresent
+ tag: v0.8.8
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/gaps/3.1.5/questions.yaml b/test/gaps/3.1.5/questions.yaml
new file mode 100644
index 00000000..7447b505
--- /dev/null
+++ b/test/gaps/3.1.5/questions.yaml
@@ -0,0 +1,437 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8484
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8484
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36030
+ required: true
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: data
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/usr/data"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/gaps/3.1.5/templates/common.yaml b/test/gaps/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/gaps/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/gaps/3.1.5/test_values.yaml b/test/gaps/3.1.5/test_values.yaml
new file mode 100644
index 00000000..ed003b80
--- /dev/null
+++ b/test/gaps/3.1.5/test_values.yaml
@@ -0,0 +1,26 @@
+# Default values for Gaps.
+
+image:
+ repository: housewrecker/gaps
+ pullPolicy: IfNotPresent
+ tag: v0.8.8
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 8484
+
+env: {}
+ # TZ: UTC
+
+persistence:
+ data:
+ enabled: true
+ mountPath: "/usr/data"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/gaps/3.1.5/values.yaml b/test/gaps/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/gaps/item.yaml b/test/gaps/item.yaml
new file mode 100644
index 00000000..5fe657ea
--- /dev/null
+++ b/test/gaps/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png
diff --git a/test/grocy/3.1.5/CONFIG.md b/test/grocy/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/grocy/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/grocy/3.1.5/Chart.lock b/test/grocy/3.1.5/Chart.lock
new file mode 100644
index 00000000..68e5cfd9
--- /dev/null
+++ b/test/grocy/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:55.353851311Z"
diff --git a/test/grocy/3.1.5/Chart.yaml b/test/grocy/3.1.5/Chart.yaml
new file mode 100644
index 00000000..c0b86fc5
--- /dev/null
+++ b/test/grocy/3.1.5/Chart.yaml
@@ -0,0 +1,27 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: grocy
+version: 3.1.5
+upstream_version: 4.3.1
+appVersion: "auto"
+description: ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/grocy
+icon: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png
+keywords:
+ - grocy
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/grocy
+ - https://github.com/k8s-at-home/charts/tree/master/charts/grocy
+ - https://github.com/grocy/grocy
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/grocy/3.1.5/README.md b/test/grocy/3.1.5/README.md
new file mode 100644
index 00000000..48ea0db9
--- /dev/null
+++ b/test/grocy/3.1.5/README.md
@@ -0,0 +1,55 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `grocy`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `grocy` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/grocy/3.1.5/app-readme.md b/test/grocy/3.1.5/app-readme.md
new file mode 100644
index 00000000..e0fe6314
--- /dev/null
+++ b/test/grocy/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home
diff --git a/test/grocy/3.1.5/charts/common-3.5.5.tgz b/test/grocy/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/grocy/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/grocy/3.1.5/ix_values.yaml b/test/grocy/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..06ee1e3d
--- /dev/null
+++ b/test/grocy/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: linuxserver/grocy
+ tag: version-v2.7.1
+ pullPolicy: IfNotPresent
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/grocy/3.1.5/questions.yaml b/test/grocy/3.1.5/questions.yaml
new file mode 100644
index 00000000..a0354443
--- /dev/null
+++ b/test/grocy/3.1.5/questions.yaml
@@ -0,0 +1,449 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36031
+ required: true
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/grocy/3.1.5/templates/common.yaml b/test/grocy/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/grocy/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/grocy/3.1.5/test_values.yaml b/test/grocy/3.1.5/test_values.yaml
new file mode 100644
index 00000000..a6a2a176
--- /dev/null
+++ b/test/grocy/3.1.5/test_values.yaml
@@ -0,0 +1,35 @@
+# Default values for grocy.
+
+image:
+ repository: linuxserver/grocy
+ tag: version-v2.7.1
+ pullPolicy: IfNotPresent
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 80
+
+env: {}
+ # TZ:
+ # PUID:
+ # PGID:
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/grocy/3.1.5/values.yaml b/test/grocy/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/grocy/item.yaml b/test/grocy/item.yaml
new file mode 100644
index 00000000..fccd77cd
--- /dev/null
+++ b/test/grocy/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - Home-Automation
+icon_url: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png
diff --git a/test/heimdall/3.1.5/CONFIG.md b/test/heimdall/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/heimdall/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/heimdall/3.1.5/Chart.lock b/test/heimdall/3.1.5/Chart.lock
new file mode 100644
index 00000000..cacfa930
--- /dev/null
+++ b/test/heimdall/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:55.828605151Z"
diff --git a/test/heimdall/3.1.5/Chart.yaml b/test/heimdall/3.1.5/Chart.yaml
new file mode 100644
index 00000000..518e04c3
--- /dev/null
+++ b/test/heimdall/3.1.5/Chart.yaml
@@ -0,0 +1,26 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: heimdall
+version: 3.1.5
+upstream_version: 4.1.1
+appVersion: "auto"
+description: An Application dashboard and launcher
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/heimdall
+icon: https://i.imgur.com/mM4tcO5.png
+keywords:
+ - heimdall
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/heimdall
+ - https://github.com/k8s-at-home/charts/tree/master/charts/heimdall
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/heimdall/3.1.5/README.md b/test/heimdall/3.1.5/README.md
new file mode 100644
index 00000000..d7c114c3
--- /dev/null
+++ b/test/heimdall/3.1.5/README.md
@@ -0,0 +1,54 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+An Application dashboard and launcher
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `heimdall`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `heimdall` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/heimdall/3.1.5/app-readme.md b/test/heimdall/3.1.5/app-readme.md
new file mode 100644
index 00000000..3fb24ea7
--- /dev/null
+++ b/test/heimdall/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+An Application dashboard and launcher
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+An Application dashboard and launcher
diff --git a/test/heimdall/3.1.5/charts/common-3.5.5.tgz b/test/heimdall/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/heimdall/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/heimdall/3.1.5/ix_values.yaml b/test/heimdall/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..bdcc3ce0
--- /dev/null
+++ b/test/heimdall/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: linuxserver/heimdall
+ tag: version-2.2.2
+ pullPolicy: IfNotPresent
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/heimdall/3.1.5/questions.yaml b/test/heimdall/3.1.5/questions.yaml
new file mode 100644
index 00000000..58181732
--- /dev/null
+++ b/test/heimdall/3.1.5/questions.yaml
@@ -0,0 +1,450 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36033
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/heimdall/3.1.5/templates/common.yaml b/test/heimdall/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/heimdall/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/heimdall/3.1.5/test_values.yaml b/test/heimdall/3.1.5/test_values.yaml
new file mode 100644
index 00000000..ae76faf7
--- /dev/null
+++ b/test/heimdall/3.1.5/test_values.yaml
@@ -0,0 +1,39 @@
+# Default values for grocy.
+
+image:
+ repository: linuxserver/heimdall
+ tag: version-2.2.2
+ pullPolicy: IfNotPresent
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 80
+
+env: {}
+ # TZ:
+ # PUID:
+ # PGID:
+
+probes:
+ startup:
+ enabled: true
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/heimdall/3.1.5/values.yaml b/test/heimdall/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/heimdall/item.yaml b/test/heimdall/item.yaml
new file mode 100644
index 00000000..6caccc75
--- /dev/null
+++ b/test/heimdall/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - organizers
+icon_url: https://i.imgur.com/mM4tcO5.png
diff --git a/test/lazylibrarian/3.1.5/CONFIG.md b/test/lazylibrarian/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/lazylibrarian/3.1.5/Chart.lock b/test/lazylibrarian/3.1.5/Chart.lock
new file mode 100644
index 00000000..65292a03
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:56.313756383Z"
diff --git a/test/lazylibrarian/3.1.5/Chart.yaml b/test/lazylibrarian/3.1.5/Chart.yaml
new file mode 100644
index 00000000..94eca5a2
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/Chart.yaml
@@ -0,0 +1,32 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: lazylibrarian
+version: 3.1.5
+upstream_version: 2.1.0
+appVersion: "latest"
+description: Get all your books, like series with Sonarr...
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/lazylibrarian
+icon: https://lazylibrarian.gitlab.io/logo.svg
+keywords:
+ - lazylibrarian
+ - ebooks
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/lazylibrarian
+ - https://github.com/k8s-at-home/charts/tree/master/charts/lazylibrarian
+ - https://gitlab.com/LazyLibrarian/LazyLibrarian.git
+ - https://lazylibrarian.gitlab.io
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: Ornias1993
+ email: kjeld@schouten-lebbing.nl
+ url: truecharts.org
+# annotations:
diff --git a/test/lazylibrarian/3.1.5/README.md b/test/lazylibrarian/3.1.5/README.md
new file mode 100644
index 00000000..56385ef9
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square)
+
+Get all your books, like series with Sonarr...
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `lazylibrarian`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `lazylibrarian` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/lazylibrarian/3.1.5/app-readme.md b/test/lazylibrarian/3.1.5/app-readme.md
new file mode 100644
index 00000000..c67c1844
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Get all your books, like series with Sonarr...
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Get all your books, like series with Sonarr...
diff --git a/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz b/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/lazylibrarian/3.1.5/ix_values.yaml b/test/lazylibrarian/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..553b98db
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: linuxserver/lazylibrarian
+ pullPolicy: IfNotPresent
+ tag: latest
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/lazylibrarian/3.1.5/questions.yaml b/test/lazylibrarian/3.1.5/questions.yaml
new file mode 100644
index 00000000..248cf4c9
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/questions.yaml
@@ -0,0 +1,451 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 5299
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 5299
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36033
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/lazylibrarian/3.1.5/templates/common.yaml b/test/lazylibrarian/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/lazylibrarian/3.1.5/test_values.yaml b/test/lazylibrarian/3.1.5/test_values.yaml
new file mode 100644
index 00000000..23d51564
--- /dev/null
+++ b/test/lazylibrarian/3.1.5/test_values.yaml
@@ -0,0 +1,35 @@
+# Default values for LazyLibrarian.
+
+image:
+ repository: linuxserver/lazylibrarian
+ pullPolicy: IfNotPresent
+ tag: latest
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 5299
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/lazylibrarian/3.1.5/values.yaml b/test/lazylibrarian/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/lazylibrarian/item.yaml b/test/lazylibrarian/item.yaml
new file mode 100644
index 00000000..9c98c1c5
--- /dev/null
+++ b/test/lazylibrarian/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://lazylibrarian.gitlab.io/logo.svg
diff --git a/test/lychee/3.1.5/CONFIG.md b/test/lychee/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/lychee/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/lychee/3.1.5/Chart.lock b/test/lychee/3.1.5/Chart.lock
new file mode 100644
index 00000000..73850d9b
--- /dev/null
+++ b/test/lychee/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:56.76465654Z"
diff --git a/test/lychee/3.1.5/Chart.yaml b/test/lychee/3.1.5/Chart.yaml
new file mode 100644
index 00000000..32e24374
--- /dev/null
+++ b/test/lychee/3.1.5/Chart.yaml
@@ -0,0 +1,30 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: lychee
+version: 3.1.5
+upstream_version: 2.3.1
+appVersion: "auto"
+description: Lychee is a free photo-management tool, which runs on your server or web-space
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/lychee
+icon: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true
+keywords:
+ - lychee
+ - photo
+ - pictures
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/lychee
+ - https://github.com/k8s-at-home/charts/tree/master/charts/lychee
+ - https://github.com/LycheeOrg/Lychee
+ - https://hub.docker.com/r/lycheeorg/lychee
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/lychee/3.1.5/README.md b/test/lychee/3.1.5/README.md
new file mode 100644
index 00000000..27772b14
--- /dev/null
+++ b/test/lychee/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Lychee is a free photo-management tool, which runs on your server or web-space
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `lychee`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `lychee` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/lychee/3.1.5/app-readme.md b/test/lychee/3.1.5/app-readme.md
new file mode 100644
index 00000000..b420d9b3
--- /dev/null
+++ b/test/lychee/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Lychee is a free photo-management tool, which runs on your server or web-space
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Lychee is a free photo-management tool, which runs on your server or web-space
diff --git a/test/lychee/3.1.5/charts/common-3.5.5.tgz b/test/lychee/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/lychee/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/lychee/3.1.5/ix_values.yaml b/test/lychee/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..63bb15fa
--- /dev/null
+++ b/test/lychee/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: lycheeorg/lychee-laravel
+ pullPolicy: IfNotPresent
+ tag: v4.3.0
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/lychee/3.1.5/questions.yaml b/test/lychee/3.1.5/questions.yaml
new file mode 100644
index 00000000..53e656bb
--- /dev/null
+++ b/test/lychee/3.1.5/questions.yaml
@@ -0,0 +1,450 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36034
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/lychee/3.1.5/templates/common.yaml b/test/lychee/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/lychee/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/lychee/3.1.5/test_values.yaml b/test/lychee/3.1.5/test_values.yaml
new file mode 100644
index 00000000..d333576f
--- /dev/null
+++ b/test/lychee/3.1.5/test_values.yaml
@@ -0,0 +1,35 @@
+# Default values for Lychee.
+
+image:
+ repository: lycheeorg/lychee-laravel
+ pullPolicy: IfNotPresent
+ tag: v4.3.0
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 80
+
+env: {}
+ # PHP_TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/lychee/3.1.5/values.yaml b/test/lychee/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/lychee/item.yaml b/test/lychee/item.yaml
new file mode 100644
index 00000000..f4a427e5
--- /dev/null
+++ b/test/lychee/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true
diff --git a/test/navidrome/3.1.5/CONFIG.md b/test/navidrome/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/navidrome/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/navidrome/3.1.5/Chart.lock b/test/navidrome/3.1.5/Chart.lock
new file mode 100644
index 00000000..7bc1bf1a
--- /dev/null
+++ b/test/navidrome/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:57.203494707Z"
diff --git a/test/navidrome/3.1.5/Chart.yaml b/test/navidrome/3.1.5/Chart.yaml
new file mode 100644
index 00000000..72932899
--- /dev/null
+++ b/test/navidrome/3.1.5/Chart.yaml
@@ -0,0 +1,30 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: navidrome
+version: 3.1.5
+upstream_version: 2.3.1
+appVersion: "auto"
+description: Navidrome is an open source web-based music collection server and streamer
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/navidrome
+icon: https://raw.githubusercontent.com/navidrome/navidrome/v0.42.0/ui/src/icons/android-icon-192x192.png
+keywords:
+ - navidrome
+ - music
+ - streaming
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/navidrome
+ - https://github.com/k8s-at-home/charts/tree/master/charts/navidrome
+ - https://github.com/deluan/navidrome
+ - https://hub.docker.com/r/deluan/navidrome
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/navidrome/3.1.5/README.md b/test/navidrome/3.1.5/README.md
new file mode 100644
index 00000000..5e5e1c74
--- /dev/null
+++ b/test/navidrome/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Navidrome is an open source web-based music collection server and streamer
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `navidrome`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `navidrome` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/navidrome/3.1.5/app-readme.md b/test/navidrome/3.1.5/app-readme.md
new file mode 100644
index 00000000..4f10b994
--- /dev/null
+++ b/test/navidrome/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Navidrome is an open source web-based music collection server and streamer
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Navidrome is an open source web-based music collection server and streamer
diff --git a/test/navidrome/3.1.5/charts/common-3.5.5.tgz b/test/navidrome/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/navidrome/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/navidrome/3.1.5/ix_values.yaml b/test/navidrome/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..e473a71b
--- /dev/null
+++ b/test/navidrome/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: deluan/navidrome
+ pullPolicy: IfNotPresent
+ tag: 0.42.1
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/navidrome/3.1.5/questions.yaml b/test/navidrome/3.1.5/questions.yaml
new file mode 100644
index 00000000..8758663b
--- /dev/null
+++ b/test/navidrome/3.1.5/questions.yaml
@@ -0,0 +1,436 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 4533
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 4533
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36027
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: data
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/data"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/navidrome/3.1.5/templates/common.yaml b/test/navidrome/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/navidrome/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/navidrome/3.1.5/test_values.yaml b/test/navidrome/3.1.5/test_values.yaml
new file mode 100644
index 00000000..2446a844
--- /dev/null
+++ b/test/navidrome/3.1.5/test_values.yaml
@@ -0,0 +1,30 @@
+# Default values for Navidrome.
+
+image:
+ repository: deluan/navidrome
+ pullPolicy: IfNotPresent
+ tag: 0.42.1
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 4533
+
+env:
+ ND_SCANINTERVAL: "15m"
+ ND_LOGLEVEL: "info"
+ ND_SESSIONTIMEOUT: "24h"
+ ND_ENABLETRANSCODINGCONFIG: "true"
+ ND_MUSICFOLDER: "/music"
+
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/navidrome/3.1.5/values.yaml b/test/navidrome/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/navidrome/item.yaml b/test/navidrome/item.yaml
new file mode 100644
index 00000000..576fa6c3
--- /dev/null
+++ b/test/navidrome/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://raw.githubusercontent.com/navidrome/navidrome/v0.42.0/ui/src/icons/android-icon-192x192.png
diff --git a/test/node-red/3.1.5/CONFIG.md b/test/node-red/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/node-red/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/node-red/3.1.5/Chart.lock b/test/node-red/3.1.5/Chart.lock
new file mode 100644
index 00000000..97540c4a
--- /dev/null
+++ b/test/node-red/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:57.699027831Z"
diff --git a/test/node-red/3.1.5/Chart.yaml b/test/node-red/3.1.5/Chart.yaml
new file mode 100644
index 00000000..fc4384e3
--- /dev/null
+++ b/test/node-red/3.1.5/Chart.yaml
@@ -0,0 +1,28 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: node-red
+version: 3.1.5
+upstream_version: 5.2.1
+appVersion: "auto"
+description: Node-RED is low-code programming for event-driven applications
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/node-red
+icon: https://nodered.org/about/resources/media/node-red-icon-2.png
+keywords:
+ - node-red
+ - nodered
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/node-red
+ - https://github.com/k8s-at-home/charts/tree/master/charts/node-red
+ - https://github.com/node-red/node-red-docker
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/node-red/3.1.5/README.md b/test/node-red/3.1.5/README.md
new file mode 100644
index 00000000..ef5216e0
--- /dev/null
+++ b/test/node-red/3.1.5/README.md
@@ -0,0 +1,55 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Node-RED is low-code programming for event-driven applications
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `node-red`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `node-red` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/node-red/3.1.5/app-readme.md b/test/node-red/3.1.5/app-readme.md
new file mode 100644
index 00000000..6ecbe710
--- /dev/null
+++ b/test/node-red/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Node-RED is low-code programming for event-driven applications
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Node-RED is low-code programming for event-driven applications
diff --git a/test/node-red/3.1.5/charts/common-3.5.5.tgz b/test/node-red/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/node-red/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/node-red/3.1.5/ix_values.yaml b/test/node-red/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..48dd3201
--- /dev/null
+++ b/test/node-red/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: nodered/node-red
+ pullPolicy: IfNotPresent
+ tag: 1.3.4
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/node-red/3.1.5/questions.yaml b/test/node-red/3.1.5/questions.yaml
new file mode 100644
index 00000000..eb29b285
--- /dev/null
+++ b/test/node-red/3.1.5/questions.yaml
@@ -0,0 +1,436 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 1880
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 1880
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36028
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: data
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/data"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/node-red/3.1.5/templates/common.yaml b/test/node-red/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/node-red/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/node-red/3.1.5/test_values.yaml b/test/node-red/3.1.5/test_values.yaml
new file mode 100644
index 00000000..4339f588
--- /dev/null
+++ b/test/node-red/3.1.5/test_values.yaml
@@ -0,0 +1,32 @@
+# Default values for node-red.
+
+image:
+ repository: nodered/node-red
+ pullPolicy: IfNotPresent
+ tag: 1.3.4
+
+strategy:
+ type: Recreate
+
+# See more environment varaibles in the node-red documentation
+# https://nodered.org/docs/getting-started/docker
+env: {}
+ # TZ:
+ # NODE_OPTIONS:
+ # NODE_RED_ENABLE_PROJECTS:
+ # NODE_RED_ENABLE_SAFE_MODE:
+ # FLOWS:
+
+services:
+ main:
+ port:
+ port: 1880
+
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/node-red/3.1.5/values.yaml b/test/node-red/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/node-red/item.yaml b/test/node-red/item.yaml
new file mode 100644
index 00000000..31b0c4a8
--- /dev/null
+++ b/test/node-red/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - tools
+icon_url: https://nodered.org/about/resources/media/node-red-icon-2.png
diff --git a/test/nzbget/3.1.5/CONFIG.md b/test/nzbget/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/nzbget/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/nzbget/3.1.5/Chart.lock b/test/nzbget/3.1.5/Chart.lock
new file mode 100644
index 00000000..9d35bc3f
--- /dev/null
+++ b/test/nzbget/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:58.151914285Z"
diff --git a/test/nzbget/3.1.5/Chart.yaml b/test/nzbget/3.1.5/Chart.yaml
new file mode 100644
index 00000000..863ecde8
--- /dev/null
+++ b/test/nzbget/3.1.5/Chart.yaml
@@ -0,0 +1,29 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: nzbget
+version: 3.1.5
+upstream_version: 7.3.1
+appVersion: "auto"
+description: NZBGet is a Usenet downloader client
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/nzbget
+icon: https://avatars1.githubusercontent.com/u/3368377?s=400&v=4
+keywords:
+ - nzbget
+ - usenet
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/nzbget
+ - https://github.com/k8s-at-home/charts/tree/master/charts/nzbget
+ - https://hub.docker.com/r/linuxserver/nzbget/
+ - https://nzbget.net/
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/nzbget/3.1.5/README.md b/test/nzbget/3.1.5/README.md
new file mode 100644
index 00000000..927dec88
--- /dev/null
+++ b/test/nzbget/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+NZBGet is a Usenet downloader client
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `nzbget`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `nzbget` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/nzbget/3.1.5/app-readme.md b/test/nzbget/3.1.5/app-readme.md
new file mode 100644
index 00000000..bde861cf
--- /dev/null
+++ b/test/nzbget/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+NZBGet is a Usenet downloader client
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+NZBGet is a Usenet downloader client
diff --git a/test/nzbget/3.1.5/charts/common-3.5.5.tgz b/test/nzbget/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/nzbget/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/nzbget/3.1.5/ix_values.yaml b/test/nzbget/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..08de88a7
--- /dev/null
+++ b/test/nzbget/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ghcr.io/truecharts/nzbget
+ pullPolicy: IfNotPresent
+ tag: v21.0
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/nzbget/3.1.5/questions.yaml b/test/nzbget/3.1.5/questions.yaml
new file mode 100644
index 00000000..842b21e7
--- /dev/null
+++ b/test/nzbget/3.1.5/questions.yaml
@@ -0,0 +1,436 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 6789
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 6789
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36021
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/nzbget/3.1.5/templates/common.yaml b/test/nzbget/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/nzbget/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/nzbget/3.1.5/test_values.yaml b/test/nzbget/3.1.5/test_values.yaml
new file mode 100644
index 00000000..212877c5
--- /dev/null
+++ b/test/nzbget/3.1.5/test_values.yaml
@@ -0,0 +1,23 @@
+# Default values for nzbget.
+
+image:
+ repository: ghcr.io/truecharts/nzbget
+ pullPolicy: IfNotPresent
+ tag: v21.0
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 6789
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/nzbget/3.1.5/values.yaml b/test/nzbget/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/nzbget/item.yaml b/test/nzbget/item.yaml
new file mode 100644
index 00000000..86059d18
--- /dev/null
+++ b/test/nzbget/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://avatars1.githubusercontent.com/u/3368377?s=400&v=4
diff --git a/test/nzbhydra/3.1.5/CONFIG.md b/test/nzbhydra/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/nzbhydra/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/nzbhydra/3.1.5/Chart.lock b/test/nzbhydra/3.1.5/Chart.lock
new file mode 100644
index 00000000..cef5aa69
--- /dev/null
+++ b/test/nzbhydra/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:58.660164697Z"
diff --git a/test/nzbhydra/3.1.5/Chart.yaml b/test/nzbhydra/3.1.5/Chart.yaml
new file mode 100644
index 00000000..5d35ede6
--- /dev/null
+++ b/test/nzbhydra/3.1.5/Chart.yaml
@@ -0,0 +1,29 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: nzbhydra
+version: 3.1.5
+upstream_version: 5.3.1
+appVersion: "auto"
+description: Usenet meta search
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/nzbhydra
+icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png
+keywords:
+ - nzbhydra
+ - usenet
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/nzbhydra
+ - https://github.com/k8s-at-home/charts/tree/master/charts/nzbhydra
+ - https://hub.docker.com/r/linuxserver/nzbhydra2
+ - https://github.com/theotherp/nzbhydra2
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/nzbhydra/3.1.5/README.md b/test/nzbhydra/3.1.5/README.md
new file mode 100644
index 00000000..a3cd6644
--- /dev/null
+++ b/test/nzbhydra/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Usenet meta search
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `nzbhydra`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `nzbhydra` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/nzbhydra/3.1.5/app-readme.md b/test/nzbhydra/3.1.5/app-readme.md
new file mode 100644
index 00000000..2012c83a
--- /dev/null
+++ b/test/nzbhydra/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Usenet meta search
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Usenet meta search
diff --git a/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz b/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/nzbhydra/3.1.5/ix_values.yaml b/test/nzbhydra/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..0a6fde47
--- /dev/null
+++ b/test/nzbhydra/3.1.5/ix_values.yaml
@@ -0,0 +1,51 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ghcr.io/truecharts/nzbhydra2
+ pullPolicy: IfNotPresent
+ tag: v3.14.1
+
+probes:
+ liveness:
+ custom: true
+ enabled: true
+ spec:
+ failureThreshold: 5
+ httpGet:
+ path: /actuator/health/livenessState
+ port: http
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 10
+ readiness:
+ custom: true
+ enabled: true
+ spec:
+ failureThreshold: 5
+ httpGet:
+ path: /actuator/health/readinessState
+ port: http
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 10
+ startup:
+ custom: true
+ enabled: true
+ spec:
+ failureThreshold: 5
+ httpGet:
+ path: /actuator/health/readinessState
+ port: http
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 10
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/nzbhydra/3.1.5/questions.yaml b/test/nzbhydra/3.1.5/questions.yaml
new file mode 100644
index 00000000..a620bab6
--- /dev/null
+++ b/test/nzbhydra/3.1.5/questions.yaml
@@ -0,0 +1,436 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 5076
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 5076
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36041
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/nzbhydra/3.1.5/templates/common.yaml b/test/nzbhydra/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/nzbhydra/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/nzbhydra/3.1.5/test_values.yaml b/test/nzbhydra/3.1.5/test_values.yaml
new file mode 100644
index 00000000..5baf1ad7
--- /dev/null
+++ b/test/nzbhydra/3.1.5/test_values.yaml
@@ -0,0 +1,64 @@
+# Default values for nzbhydra.
+
+image:
+ repository: ghcr.io/truecharts/nzbhydra2
+ pullPolicy: IfNotPresent
+ tag: v3.14.1
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 5076
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+probes:
+ liveness:
+ custom: true
+ enabled: true
+ spec:
+ failureThreshold: 5
+ httpGet:
+ path: /actuator/health/livenessState
+ port: http
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 10
+ readiness:
+ custom: true
+ enabled: true
+ spec:
+ failureThreshold: 5
+ httpGet:
+ path: /actuator/health/readinessState
+ port: http
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 10
+ startup:
+ custom: true
+ enabled: true
+ spec:
+ failureThreshold: 5
+ httpGet:
+ path: /actuator/health/readinessState
+ port: http
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 10
+
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/nzbhydra/3.1.5/values.yaml b/test/nzbhydra/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/nzbhydra/item.yaml b/test/nzbhydra/item.yaml
new file mode 100644
index 00000000..9da6666b
--- /dev/null
+++ b/test/nzbhydra/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png
diff --git a/test/organizr/3.1.5/CONFIG.md b/test/organizr/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/organizr/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/organizr/3.1.5/Chart.lock b/test/organizr/3.1.5/Chart.lock
new file mode 100644
index 00000000..3afb86bf
--- /dev/null
+++ b/test/organizr/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:59.129683638Z"
diff --git a/test/organizr/3.1.5/Chart.yaml b/test/organizr/3.1.5/Chart.yaml
new file mode 100644
index 00000000..631c1abc
--- /dev/null
+++ b/test/organizr/3.1.5/Chart.yaml
@@ -0,0 +1,28 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: organizr
+version: 3.1.5
+upstream_version: 3.2.1
+appVersion: "latest"
+description: HTPC/Homelab Services Organizer
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/organizr
+icon: https://github.com/causefx/Organizr/blob/v2-master/plugins/images/organizr/logo.png?raw=true
+keywords:
+ - organizr
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/organizr
+ - https://github.com/k8s-at-home/charts/tree/master/charts/organizr
+ - https://github.com/causefx/Organizr
+ - https://hub.docker.com/r/organizr/organizr
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/organizr/3.1.5/README.md b/test/organizr/3.1.5/README.md
new file mode 100644
index 00000000..dd5cdedc
--- /dev/null
+++ b/test/organizr/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square)
+
+HTPC/Homelab Services Organizer
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `organizr`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `organizr` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/organizr/3.1.5/app-readme.md b/test/organizr/3.1.5/app-readme.md
new file mode 100644
index 00000000..0bfeec6a
--- /dev/null
+++ b/test/organizr/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+HTPC/Homelab Services Organizer
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+HTPC/Homelab Services Organizer
diff --git a/test/organizr/3.1.5/charts/common-3.5.5.tgz b/test/organizr/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/organizr/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/organizr/3.1.5/ix_values.yaml b/test/organizr/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..19a9fa1e
--- /dev/null
+++ b/test/organizr/3.1.5/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: organizr/organizr
+ pullPolicy: Always
+ tag: latest
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/organizr/3.1.5/questions.yaml b/test/organizr/3.1.5/questions.yaml
new file mode 100644
index 00000000..35051230
--- /dev/null
+++ b/test/organizr/3.1.5/questions.yaml
@@ -0,0 +1,502 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36046
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: data
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/data"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/organizr/3.1.5/templates/common.yaml b/test/organizr/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/organizr/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/organizr/3.1.5/test_values.yaml b/test/organizr/3.1.5/test_values.yaml
new file mode 100644
index 00000000..c784dfb7
--- /dev/null
+++ b/test/organizr/3.1.5/test_values.yaml
@@ -0,0 +1,35 @@
+# Default values for Organizr.
+
+image:
+ repository: organizr/organizr
+ pullPolicy: Always
+ tag: latest
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 80
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/organizr/3.1.5/values.yaml b/test/organizr/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/organizr/item.yaml b/test/organizr/item.yaml
new file mode 100644
index 00000000..8d111e1f
--- /dev/null
+++ b/test/organizr/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - organizers
+icon_url: https://github.com/causefx/Organizr/blob/v2-master/plugins/images/organizr/logo.png?raw=true
diff --git a/test/podgrab/1.0.3/CONFIG.md b/test/podgrab/1.0.3/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/podgrab/1.0.3/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/podgrab/1.0.3/Chart.lock b/test/podgrab/1.0.3/Chart.lock
new file mode 100644
index 00000000..ad7bd61f
--- /dev/null
+++ b/test/podgrab/1.0.3/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:29:59.589063587Z"
diff --git a/test/podgrab/1.0.3/Chart.yaml b/test/podgrab/1.0.3/Chart.yaml
new file mode 100644
index 00000000..da35df55
--- /dev/null
+++ b/test/podgrab/1.0.3/Chart.yaml
@@ -0,0 +1,27 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: podgrab
+version: 1.0.3
+upstream_version: 1.0.0
+appVersion: "latest"
+description: A self-hosted podcast manager to download episodes as soon as they become live.
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/podgrab
+icon: https://truecharts.org/_static/img/podgrab-icon.png
+keywords:
+ - podgrab
+sources:
+ - https://github.com/akhilrex/podgrab
+ - https://hub.docker.com/r/akhilrex/podgrab
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: warllo54
+ email: 20650065+warllo54@users.noreply.github.com
+ url: truecharts.org
diff --git a/test/podgrab/1.0.3/README.md b/test/podgrab/1.0.3/README.md
new file mode 100644
index 00000000..9977071a
--- /dev/null
+++ b/test/podgrab/1.0.3/README.md
@@ -0,0 +1,54 @@
+# Introduction
+
+![Version: 1.0.3](https://img.shields.io/badge/Version-1.0.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square)
+
+A self-hosted podcast manager to download episodes as soon as they become live.
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `podgrab`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `podgrab` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/podgrab/1.0.3/app-readme.md b/test/podgrab/1.0.3/app-readme.md
new file mode 100644
index 00000000..9d85b5de
--- /dev/null
+++ b/test/podgrab/1.0.3/app-readme.md
@@ -0,0 +1,3 @@
+A self-hosted podcast manager to download episodes as soon as they become live.
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+A self-hosted podcast manager to download episodes as soon as they become live.
diff --git a/test/podgrab/1.0.3/charts/common-3.5.5.tgz b/test/podgrab/1.0.3/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/podgrab/1.0.3/charts/common-3.5.5.tgz differ
diff --git a/test/podgrab/1.0.3/ix_values.yaml b/test/podgrab/1.0.3/ix_values.yaml
new file mode 100644
index 00000000..4d5da6cf
--- /dev/null
+++ b/test/podgrab/1.0.3/ix_values.yaml
@@ -0,0 +1,16 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: akhilrex/podgrab
+ pullPolicy: Always
+ tag: latest
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/podgrab/1.0.3/questions.yaml b/test/podgrab/1.0.3/questions.yaml
new file mode 100644
index 00000000..023e9e17
--- /dev/null
+++ b/test/podgrab/1.0.3/questions.yaml
@@ -0,0 +1,454 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+# App env variables
+ - variable: env
+ group: "Configuration"
+ label: "Image Environment"
+ schema:
+ type: dict
+ attrs:
+ - variable: PASSWORD
+ label: "Password"
+ description: "Desired Password"
+ schema:
+ type: string
+ default: ""
+ required: false
+ - variable: CHECK_FREQUENCY
+ label: "Update Frequency"
+ description: "Interval to check for new podcasts"
+ schema:
+ type: int
+ default: 240
+ required: true
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 51080
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36047
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Config Storage"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "1Gi"
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/podgrab/1.0.3/templates/common.yaml b/test/podgrab/1.0.3/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/podgrab/1.0.3/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/podgrab/1.0.3/test_values.yaml b/test/podgrab/1.0.3/test_values.yaml
new file mode 100644
index 00000000..6982fed0
--- /dev/null
+++ b/test/podgrab/1.0.3/test_values.yaml
@@ -0,0 +1,47 @@
+# Default values for podgrab.
+
+image:
+ repository: akhilrex/podgrab
+ pullPolicy: Always
+ tag: latest
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: true
+ runAsUser: 568
+ runAsGroup: 568
+ fsGroup: 568
+
+services:
+ main:
+ port:
+ port: 8080
+ tcp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 51080
+ protocol: TCP
+ targetPort: 51080
+
+env:
+ PASSWORD: secretpasswordgoeshere
+ CHECK_FREQUENCY: 240
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
+
+customStorage:
+ - name: assets
+ enabled: true
+ mountPath: "/assets"
+ emptyDir: true
diff --git a/test/podgrab/1.0.3/values.yaml b/test/podgrab/1.0.3/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/podgrab/item.yaml b/test/podgrab/item.yaml
new file mode 100644
index 00000000..8fea192f
--- /dev/null
+++ b/test/podgrab/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - mutlimedia
+icon_url: https://truecharts.org/_static/img/podgrab-icon.png
diff --git a/test/qbittorrent/3.1.5/CONFIG.md b/test/qbittorrent/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/qbittorrent/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/qbittorrent/3.1.5/Chart.lock b/test/qbittorrent/3.1.5/Chart.lock
new file mode 100644
index 00000000..42139f48
--- /dev/null
+++ b/test/qbittorrent/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:30:00.098310198Z"
diff --git a/test/qbittorrent/3.1.5/Chart.yaml b/test/qbittorrent/3.1.5/Chart.yaml
new file mode 100644
index 00000000..37d8d5de
--- /dev/null
+++ b/test/qbittorrent/3.1.5/Chart.yaml
@@ -0,0 +1,28 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: qbittorrent
+version: 3.1.5
+upstream_version: 7.2.1
+appVersion: "auto"
+description: qBittorrent is a cross-platform free and open-source BitTorrent client
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/qbittorrent
+icon: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png
+keywords:
+ - qbittorrent
+ - torrrent
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/qbittorrent
+ - https://github.com/k8s-at-home/charts/tree/master/charts/qbittorrent
+ - https://hub.docker.com/r/linuxserver/qbittorrent/
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/qbittorrent/3.1.5/README.md b/test/qbittorrent/3.1.5/README.md
new file mode 100644
index 00000000..885309a1
--- /dev/null
+++ b/test/qbittorrent/3.1.5/README.md
@@ -0,0 +1,55 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+qBittorrent is a cross-platform free and open-source BitTorrent client
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `qbittorrent`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `qbittorrent` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/qbittorrent/3.1.5/app-readme.md b/test/qbittorrent/3.1.5/app-readme.md
new file mode 100644
index 00000000..5d26b483
--- /dev/null
+++ b/test/qbittorrent/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+qBittorrent is a cross-platform free and open-source BitTorrent client
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+qBittorrent is a cross-platform free and open-source BitTorrent client
diff --git a/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz b/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/qbittorrent/3.1.5/ix_values.yaml b/test/qbittorrent/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..a99eddee
--- /dev/null
+++ b/test/qbittorrent/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ghcr.io/truecharts/qbittorrent
+ pullPolicy: IfNotPresent
+ tag: v4.3.5
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/qbittorrent/3.1.5/questions.yaml b/test/qbittorrent/3.1.5/questions.yaml
new file mode 100644
index 00000000..d2494a1b
--- /dev/null
+++ b/test/qbittorrent/3.1.5/questions.yaml
@@ -0,0 +1,563 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36039
+ required: true
+ - variable: tcp
+ label: "TCP Torrent connections"
+ description: "This service is used to process incomming torrent connections over TCP"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "NodePort"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "TCP"
+ hidden: true
+ enum:
+ - value: TCP
+ description: "TCP"
+ - value: "UDP"
+ description: "UDP"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 6881
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 51413
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36040
+ required: true
+ - variable: udp
+ label: "UDP Torrent connections"
+ description: "This service is used to process incomming torrent connections over UDP"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "NodePort"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "UDP"
+ hidden: true
+ enum:
+ - value: TCP
+ description: "TCP"
+ - value: "UDP"
+ description: "UDP"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 6881
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 51413
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36040
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/qbittorrent/3.1.5/templates/common.yaml b/test/qbittorrent/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/qbittorrent/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/qbittorrent/3.1.5/templates/configmap.yaml b/test/qbittorrent/3.1.5/templates/configmap.yaml
new file mode 100644
index 00000000..f8549d96
--- /dev/null
+++ b/test/qbittorrent/3.1.5/templates/configmap.yaml
@@ -0,0 +1,45 @@
+##
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# `SPDX-License-Identifier: Apache-2.0`
+#
+# This file is considered to be modified by the TrueCharts Project.
+##
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: {{ template "common.names.fullname" . }}-scripts
+ labels:
+ {{- include "common.labels" . | nindent 4 }}
+data:
+ {{- $bittorrentPort := "" -}}
+ {{- $bittorrentPort = .Values.services.tcp.port.port -}}
+ {{- if $bittorrentPort }}
+ 31-update-port: |-
+ #!/bin/bash
+ QBITTORRENT_CONFIGFILE="/config/qBittorrent/qBittorrent.conf"
+ INCOMING_PORT={{- $bittorrentPort }}
+
+ incoming_port_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin='${INCOMING_PORT})
+ if [[ -z "${incoming_port_exist}" ]]; then
+ incoming_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin')
+ if [[ ! -z "${incoming_exist}" ]]; then
+ # Get line number of Incoming
+ LINE_NUM=$(grep -Fn -m 1 'Connection\PortRangeMin' ${QBITTORRENT_CONFIGFILE} | cut -d: -f 1)
+ sed -i "${LINE_NUM}s@.*@Connection\\\PortRangeMin=${INCOMING_PORT}@" ${QBITTORRENT_CONFIGFILE}
+ else
+ echo "Connection\\PortRangeMin=${INCOMING_PORT}" >> ${QBITTORRENT_CONFIGFILE}
+ fi
+ fi
+ {{- end }}
diff --git a/test/qbittorrent/3.1.5/test_values.yaml b/test/qbittorrent/3.1.5/test_values.yaml
new file mode 100644
index 00000000..02e101f8
--- /dev/null
+++ b/test/qbittorrent/3.1.5/test_values.yaml
@@ -0,0 +1,60 @@
+# Default values for qbittorrent.
+
+image:
+ repository: ghcr.io/truecharts/qbittorrent
+ pullPolicy: IfNotPresent
+ tag: v4.3.5
+
+strategy:
+ type: Recreate
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+ # UMASK: 022
+
+services:
+ main:
+ port:
+ port: 8080
+ tcp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 6881
+ protocol: TCP
+ targetPort: 51413
+ udp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 6881
+ protocol: UDP
+ targetPort: 51413
+
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
+
+additionalVolumes:
+ - name: qbittorrent-scripts
+ emptyDir: {}
+ ## When you want to enable automatic port configuration at startup, adjust this to:
+ # configMap:
+ # name: -scripts
+ # defaultMode: 511
+
+additionalVolumeMounts:
+ - mountPath: /config/custom-cont-init.d
+ name: qbittorrent-scripts
+
+
+appAdditionalServicesEnabled: true
+appAdditionalServices:
diff --git a/test/qbittorrent/3.1.5/values.yaml b/test/qbittorrent/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/qbittorrent/item.yaml b/test/qbittorrent/item.yaml
new file mode 100644
index 00000000..a366e589
--- /dev/null
+++ b/test/qbittorrent/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png
diff --git a/test/readarr/3.1.5/CONFIG.md b/test/readarr/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/readarr/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/readarr/3.1.5/Chart.lock b/test/readarr/3.1.5/Chart.lock
new file mode 100644
index 00000000..ab4b8a02
--- /dev/null
+++ b/test/readarr/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:30:00.428743745Z"
diff --git a/test/readarr/3.1.5/Chart.yaml b/test/readarr/3.1.5/Chart.yaml
new file mode 100644
index 00000000..041ee3f5
--- /dev/null
+++ b/test/readarr/3.1.5/Chart.yaml
@@ -0,0 +1,35 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: readarr
+version: 3.1.5
+upstream_version: 2.1.0
+appVersion: "auto"
+description: A fork of Radarr to work with Books & AudioBooks
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/readarr
+icon: https://github.com/Readarr/Readarr/blob/develop/Logo/1024.png?raw=true
+keywords:
+ - readarr
+ - torrent
+ - usenet
+ - AudioBooks
+ - ebooks
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/readarr
+ - https://github.com/k8s-at-home/charts/tree/master/charts/readarr
+ - https://github.com/Readarr/Readarr
+ - https://readarr.com
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: Ornias1993
+ email: kjeld@schouten-lebbing.nl
+ url: truecharts.org
+# annotations:
diff --git a/test/readarr/3.1.5/README.md b/test/readarr/3.1.5/README.md
new file mode 100644
index 00000000..dded0c18
--- /dev/null
+++ b/test/readarr/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+A fork of Radarr to work with Books & AudioBooks
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `readarr`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `readarr` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/readarr/3.1.5/app-readme.md b/test/readarr/3.1.5/app-readme.md
new file mode 100644
index 00000000..ec0ebb21
--- /dev/null
+++ b/test/readarr/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+A fork of Radarr to work with Books & AudioBooks
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+A fork of Radarr to work with Books & AudioBooks
diff --git a/test/readarr/3.1.5/charts/common-3.5.5.tgz b/test/readarr/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/readarr/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/readarr/3.1.5/ix_values.yaml b/test/readarr/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..8e161d6d
--- /dev/null
+++ b/test/readarr/3.1.5/ix_values.yaml
@@ -0,0 +1,37 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ghcr.io/truecharts/readarr
+ pullPolicy: IfNotPresent
+ tag: v0.1.0.643
+
+probes:
+ liveness:
+ enabled: true
+ ## Set this to true if you wish to specify your own livenessProbe
+ custom: true
+ ## The spec field contains the values for the default livenessProbe.
+ ## If you selected custom: true, this field holds the definition of the livenessProbe.
+ spec:
+ exec:
+ command:
+ - /usr/bin/env
+ - bash
+ - -c
+ - curl --fail localhost:8787/api/v1/system/status?apiKey=`IFS=\> && while
+ read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < /config/config.xml`
+ failureThreshold: 5
+ initialDelaySeconds: 60
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 10
+
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/readarr/3.1.5/questions.yaml b/test/readarr/3.1.5/questions.yaml
new file mode 100644
index 00000000..840fe89a
--- /dev/null
+++ b/test/readarr/3.1.5/questions.yaml
@@ -0,0 +1,436 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8787
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8787
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36038
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/readarr/3.1.5/templates/common.yaml b/test/readarr/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/readarr/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/readarr/3.1.5/test_values.yaml b/test/readarr/3.1.5/test_values.yaml
new file mode 100644
index 00000000..09676bb4
--- /dev/null
+++ b/test/readarr/3.1.5/test_values.yaml
@@ -0,0 +1,49 @@
+# Default values for Radarr.
+
+image:
+ repository: ghcr.io/truecharts/readarr
+ pullPolicy: IfNotPresent
+ tag: v0.1.0.643
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 8787
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+probes:
+ liveness:
+ enabled: true
+ ## Set this to true if you wish to specify your own livenessProbe
+ custom: true
+ ## The spec field contains the values for the default livenessProbe.
+ ## If you selected custom: true, this field holds the definition of the livenessProbe.
+ spec:
+ exec:
+ command:
+ - /usr/bin/env
+ - bash
+ - -c
+ - curl --fail localhost:8787/api/v1/system/status?apiKey=`IFS=\> && while
+ read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < /config/config.xml`
+ failureThreshold: 5
+ initialDelaySeconds: 60
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 10
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/readarr/3.1.5/values.yaml b/test/readarr/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/readarr/item.yaml b/test/readarr/item.yaml
new file mode 100644
index 00000000..e409535f
--- /dev/null
+++ b/test/readarr/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://github.com/Readarr/Readarr/blob/develop/Logo/1024.png?raw=true
diff --git a/test/sabnzbd/3.1.5/CONFIG.md b/test/sabnzbd/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/sabnzbd/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/sabnzbd/3.1.5/Chart.lock b/test/sabnzbd/3.1.5/Chart.lock
new file mode 100644
index 00000000..5c046e33
--- /dev/null
+++ b/test/sabnzbd/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:30:00.676279356Z"
diff --git a/test/sabnzbd/3.1.5/Chart.yaml b/test/sabnzbd/3.1.5/Chart.yaml
new file mode 100644
index 00000000..281a1644
--- /dev/null
+++ b/test/sabnzbd/3.1.5/Chart.yaml
@@ -0,0 +1,29 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: sabnzbd
+version: 3.1.5
+upstream_version: 5.0.1
+appVersion: "auto"
+description: Free and easy binary newsreader
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/sabnzbd
+icon: https://avatars1.githubusercontent.com/u/960698?s=400&v=4
+keywords:
+ - sabnzbd
+ - usenet
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/sabnzbd
+ - https://github.com/k8s-at-home/charts/tree/master/charts/sabnzbd
+ - https://hub.docker.com/r/linuxserver/sabnzbd/
+ - https://sabnzbd.org/
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/sabnzbd/3.1.5/README.md b/test/sabnzbd/3.1.5/README.md
new file mode 100644
index 00000000..cfa2b2d0
--- /dev/null
+++ b/test/sabnzbd/3.1.5/README.md
@@ -0,0 +1,56 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Free and easy binary newsreader
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `sabnzbd`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `sabnzbd` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/sabnzbd/3.1.5/app-readme.md b/test/sabnzbd/3.1.5/app-readme.md
new file mode 100644
index 00000000..05e7f339
--- /dev/null
+++ b/test/sabnzbd/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Free and easy binary newsreader
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Free and easy binary newsreader
diff --git a/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz b/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/sabnzbd/3.1.5/ix_values.yaml b/test/sabnzbd/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..70a2cef7
--- /dev/null
+++ b/test/sabnzbd/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ghcr.io/truecharts/sabnzbd
+ pullPolicy: IfNotPresent
+ tag: v3.2.1
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/sabnzbd/3.1.5/questions.yaml b/test/sabnzbd/3.1.5/questions.yaml
new file mode 100644
index 00000000..d47bf059
--- /dev/null
+++ b/test/sabnzbd/3.1.5/questions.yaml
@@ -0,0 +1,452 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+
+ # Docker specific env
+ - variable: env
+ group: "Configuration"
+ label: "Image Environment"
+ schema:
+ type: dict
+ attrs:
+ - variable: HOST_WHITELIST_ENTRIES
+ label: "HostName Whitelist"
+ description: "If you use a reverse proxy, you might need to enter your hostname's here (comma seperated)"
+ schema:
+ type: string
+ default: ""
+ required: false
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36045
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: true
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 568
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/sabnzbd/3.1.5/templates/common.yaml b/test/sabnzbd/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/sabnzbd/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/sabnzbd/3.1.5/test_values.yaml b/test/sabnzbd/3.1.5/test_values.yaml
new file mode 100644
index 00000000..b5ccdd61
--- /dev/null
+++ b/test/sabnzbd/3.1.5/test_values.yaml
@@ -0,0 +1,28 @@
+# Default values for Sabnzbd.
+
+image:
+ repository: ghcr.io/truecharts/sabnzbd
+ pullPolicy: IfNotPresent
+ tag: v3.2.1
+
+strategy:
+ type: Recreate
+
+services:
+ main:
+ port:
+ port: 8080
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/sabnzbd/3.1.5/values.yaml b/test/sabnzbd/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/sabnzbd/item.yaml b/test/sabnzbd/item.yaml
new file mode 100644
index 00000000..b81149d2
--- /dev/null
+++ b/test/sabnzbd/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://avatars1.githubusercontent.com/u/960698?s=400&v=4
diff --git a/test/truecommand/3.1.5/CONFIG.md b/test/truecommand/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/truecommand/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/truecommand/3.1.5/Chart.lock b/test/truecommand/3.1.5/Chart.lock
new file mode 100644
index 00000000..7d44d79e
--- /dev/null
+++ b/test/truecommand/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:30:00.892306191Z"
diff --git a/test/truecommand/3.1.5/Chart.yaml b/test/truecommand/3.1.5/Chart.yaml
new file mode 100644
index 00000000..c8ab27ff
--- /dev/null
+++ b/test/truecommand/3.1.5/Chart.yaml
@@ -0,0 +1,29 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: truecommand
+version: 3.1.5
+# upstream_version: 1.1.0
+appVersion: "nightly"
+description: Aggregated management of TrueNAS devices
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/truecommand
+icon: https://www.ixsystems.com/documentation/truecommand/1.2/_static/tv-logo.png
+keywords:
+ - truecommand
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/truecommand
+ - https://hub.docker.com/r/ixsystems/truecommand
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+ - name: Ornias1993
+ email: kjeld@schouten-lebbing.nl
+ url: truecharts.org
+# annotations:
diff --git a/test/truecommand/3.1.5/README.md b/test/truecommand/3.1.5/README.md
new file mode 100644
index 00000000..8caf3b92
--- /dev/null
+++ b/test/truecommand/3.1.5/README.md
@@ -0,0 +1,54 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: nightly](https://img.shields.io/badge/AppVersion-nightly-informational?style=flat-square)
+
+Aggregated management of TrueNAS devices
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `truecommand`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `truecommand` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/truecommand/3.1.5/app-readme.md b/test/truecommand/3.1.5/app-readme.md
new file mode 100644
index 00000000..8e146848
--- /dev/null
+++ b/test/truecommand/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Aggregated management of TrueNAS devices
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Aggregated management of TrueNAS devices
diff --git a/test/truecommand/3.1.5/charts/common-3.5.5.tgz b/test/truecommand/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/truecommand/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/truecommand/3.1.5/ix_values.yaml b/test/truecommand/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..d2b8ab2a
--- /dev/null
+++ b/test/truecommand/3.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: ixsystems/truecommand
+ pullPolicy: IfNotPresent
+ tag: nightly
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/truecommand/3.1.5/questions.yaml b/test/truecommand/3.1.5/questions.yaml
new file mode 100644
index 00000000..1701b241
--- /dev/null
+++ b/test/truecommand/3.1.5/questions.yaml
@@ -0,0 +1,453 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 80
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36044
+ required: true
+## TrueCharts Specific
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: data
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/data"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/truecommand/3.1.5/templates/common.yaml b/test/truecommand/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/truecommand/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/truecommand/3.1.5/test_values.yaml b/test/truecommand/3.1.5/test_values.yaml
new file mode 100644
index 00000000..ee4eb28f
--- /dev/null
+++ b/test/truecommand/3.1.5/test_values.yaml
@@ -0,0 +1,35 @@
+# Default values for Jackett.
+
+image:
+ repository: ixsystems/truecommand
+ pullPolicy: IfNotPresent
+ tag: nightly
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+services:
+ main:
+ port:
+ port: 80
+
+env: {}
+ # TZ: UTC
+ # PUID: 1001
+ # PGID: 1001
+
+persistence:
+ data:
+ enabled: true
+ mountPath: "/data"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/truecommand/3.1.5/values.yaml b/test/truecommand/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/truecommand/item.yaml b/test/truecommand/item.yaml
new file mode 100644
index 00000000..9c10785b
--- /dev/null
+++ b/test/truecommand/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - Administration
+icon_url: https://www.ixsystems.com/documentation/truecommand/1.2/_static/tv-logo.png
diff --git a/test/tvheadend/4.1.5/CONFIG.md b/test/tvheadend/4.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/tvheadend/4.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/tvheadend/4.1.5/Chart.lock b/test/tvheadend/4.1.5/Chart.lock
new file mode 100644
index 00000000..3987b9bb
--- /dev/null
+++ b/test/tvheadend/4.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:30:01.11612182Z"
diff --git a/test/tvheadend/4.1.5/Chart.yaml b/test/tvheadend/4.1.5/Chart.yaml
new file mode 100644
index 00000000..2e376dda
--- /dev/null
+++ b/test/tvheadend/4.1.5/Chart.yaml
@@ -0,0 +1,30 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: tvheadend
+version: 4.1.5
+upstream_version: 1.1.2
+appVersion: "latest"
+description: TVheadend - a TV streaming server and digital video recorder
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/tvheadend
+icon: https://avatars.githubusercontent.com/u/1908588?s=200&v=4
+keywords:
+ - tvheadend
+ - tv
+ - streaming
+ - dvb
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/tvheadend
+ - https://github.com/k8s-at-home/charts/tree/master/charts/tvheadend
+ - https://github.com/tvheadend/tvheadend
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/tvheadend/4.1.5/README.md b/test/tvheadend/4.1.5/README.md
new file mode 100644
index 00000000..63f3c617
--- /dev/null
+++ b/test/tvheadend/4.1.5/README.md
@@ -0,0 +1,55 @@
+# Introduction
+
+![Version: 4.1.5](https://img.shields.io/badge/Version-4.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square)
+
+TVheadend - a TV streaming server and digital video recorder
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `tvheadend`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `tvheadend` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/tvheadend/4.1.5/app-readme.md b/test/tvheadend/4.1.5/app-readme.md
new file mode 100644
index 00000000..972a532e
--- /dev/null
+++ b/test/tvheadend/4.1.5/app-readme.md
@@ -0,0 +1,3 @@
+TVheadend - a TV streaming server and digital video recorder
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+TVheadend - a TV streaming server and digital video recorder
diff --git a/test/tvheadend/4.1.5/charts/common-3.5.5.tgz b/test/tvheadend/4.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/tvheadend/4.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/tvheadend/4.1.5/ix_values.yaml b/test/tvheadend/4.1.5/ix_values.yaml
new file mode 100644
index 00000000..1d54e5cb
--- /dev/null
+++ b/test/tvheadend/4.1.5/ix_values.yaml
@@ -0,0 +1,15 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: linuxserver/tvheadend
+ pullPolicy: IfNotPresent
+ tag: latest
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/tvheadend/4.1.5/questions.yaml b/test/tvheadend/4.1.5/questions.yaml
new file mode 100644
index 00000000..5a869bcc
--- /dev/null
+++ b/test/tvheadend/4.1.5/questions.yaml
@@ -0,0 +1,492 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Service Configuration
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 9981
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 9981
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36042
+ required: true
+ - variable: htsp
+ label: "HTSP service"
+ description: "Service to connect to htsp"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "TCP"
+ hidden: true
+ enum:
+ - value: TCP
+ description: "TCP"
+ - value: "UDP"
+ description: "UDP"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 9982
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 9982
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36043
+ required: true
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/config"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/tvheadend/4.1.5/templates/common.yaml b/test/tvheadend/4.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/tvheadend/4.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/tvheadend/4.1.5/test_values.yaml b/test/tvheadend/4.1.5/test_values.yaml
new file mode 100644
index 00000000..4d5ca71d
--- /dev/null
+++ b/test/tvheadend/4.1.5/test_values.yaml
@@ -0,0 +1,44 @@
+# Default values for tvheadend.
+
+image:
+ repository: linuxserver/tvheadend
+ pullPolicy: IfNotPresent
+ tag: latest
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+# See https://github.com/linuxserver/docker-tvheadend#parameters
+env: {}
+ # PUID: 1000
+ # PGID: 1000
+ # TZ: Europe/London
+ # RUN_OPTS:
+
+services:
+ main:
+ port:
+ port: 9981
+ htsp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 9982
+ protocol: TCP
+ targetPort: 9982
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/config"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/tvheadend/4.1.5/values.yaml b/test/tvheadend/4.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/tvheadend/item.yaml b/test/tvheadend/item.yaml
new file mode 100644
index 00000000..4e787795
--- /dev/null
+++ b/test/tvheadend/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - media
+icon_url: https://avatars.githubusercontent.com/u/1908588?s=200&v=4
diff --git a/test/unifi/3.1.5/CONFIG.md b/test/unifi/3.1.5/CONFIG.md
new file mode 100644
index 00000000..6d760c18
--- /dev/null
+++ b/test/unifi/3.1.5/CONFIG.md
@@ -0,0 +1,8 @@
+# Configuration Options
+
+##### Connecting to other apps
+If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
+https://truecharts.org/manual/linking/
+
+##### Available config options
+In the future this page is going to contain an automated list of options available in the installation/edit UI.
diff --git a/test/unifi/3.1.5/Chart.lock b/test/unifi/3.1.5/Chart.lock
new file mode 100644
index 00000000..1cb7fec5
--- /dev/null
+++ b/test/unifi/3.1.5/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015
+generated: "2021-05-06T13:30:01.348637242Z"
diff --git a/test/unifi/3.1.5/Chart.yaml b/test/unifi/3.1.5/Chart.yaml
new file mode 100644
index 00000000..744da8ed
--- /dev/null
+++ b/test/unifi/3.1.5/Chart.yaml
@@ -0,0 +1,28 @@
+apiVersion: v2
+kubeVersion: ">=1.16.0-0"
+name: unifi
+version: 3.1.5
+upstream_version: 1.5.1
+appVersion: "auto"
+description: Ubiquiti Network's Unifi Controller
+type: application
+deprecated: false
+home: https://github.com/truecharts/apps/tree/master/incubator/unifi
+icon: https://dl.ubnt.com/press/logo-UniFi.png
+keywords:
+ - ubiquiti
+ - unifi
+sources:
+ - https://github.com/truecharts/apps/tree/master/incubator/unifi
+ - https://github.com/jacobalberty/unifi-docker
+ - https://unifi-network.ui.com
+dependencies:
+ - name: common
+ repository: https://truecharts.org/
+ version: 3.5.5
+ # condition:
+maintainers:
+ - name: TrueCharts
+ email: info@truecharts.org
+ url: truecharts.org
+# annotations:
diff --git a/test/unifi/3.1.5/README.md b/test/unifi/3.1.5/README.md
new file mode 100644
index 00000000..048495ca
--- /dev/null
+++ b/test/unifi/3.1.5/README.md
@@ -0,0 +1,55 @@
+# Introduction
+
+![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square)
+
+Ubiquiti Network's Unifi Controller
+
+TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
+
+## Source Code
+
+*
+*
+*
+
+## Requirements
+
+Kubernetes: `>=1.16.0-0`
+
+## Dependencies
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://truecharts.org/ | common | 3.5.5 |
+
+## Installing the Chart
+
+To install the chart with the release name `unifi`
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Click "Install" for this specific Apps
+- Fill out the configuration form
+
+## Uninstalling the Chart
+
+To uninstall the `unifi` deployment
+
+- Open TrueNAS SCALE
+- Go to Apps
+- Go to "Installed Apps"
+- Expand the menu in the top-right corner of this App
+- Click "Remove" for this specific Apps
+
+The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
+
+## Support
+
+- See the [Wiki](https://truecharts.org)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+- Ask a [question](https://github.com/truecharts/apps/discussions)
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
+All Rights Reserved - The TrueCharts Project
diff --git a/test/unifi/3.1.5/app-readme.md b/test/unifi/3.1.5/app-readme.md
new file mode 100644
index 00000000..0e6732e4
--- /dev/null
+++ b/test/unifi/3.1.5/app-readme.md
@@ -0,0 +1,3 @@
+Ubiquiti Network's Unifi Controller
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+Ubiquiti Network's Unifi Controller
diff --git a/test/unifi/3.1.5/charts/common-3.5.5.tgz b/test/unifi/3.1.5/charts/common-3.5.5.tgz
new file mode 100644
index 00000000..d01688bb
Binary files /dev/null and b/test/unifi/3.1.5/charts/common-3.5.5.tgz differ
diff --git a/test/unifi/3.1.5/ix_values.yaml b/test/unifi/3.1.5/ix_values.yaml
new file mode 100644
index 00000000..a7c2aa22
--- /dev/null
+++ b/test/unifi/3.1.5/ix_values.yaml
@@ -0,0 +1,21 @@
+##
+# This file contains Values.yaml content that gets added to the output of questions.yaml
+# It's ONLY meant for content that the user is NOT expected to change.
+# Example: Everything under "image" is not included in questions.yaml but is included here.
+##
+
+image:
+ repository: jacobalberty/unifi
+ tag: 6.1.71
+ pullPolicy: IfNotPresent
+
+
+envTpl:
+# Permissions Settings
+ UNIFI_GID: "{{ .Values.PUID }}"
+ UNIFI_UID: "{{ .Values.PGID }}"
+
+##
+# Most other defaults are set in questions.yaml
+# For other options please refer to the wiki, default_values.yaml or the common library chart
+##
diff --git a/test/unifi/3.1.5/questions.yaml b/test/unifi/3.1.5/questions.yaml
new file mode 100644
index 00000000..9b329892
--- /dev/null
+++ b/test/unifi/3.1.5/questions.yaml
@@ -0,0 +1,635 @@
+groups:
+ - name: "Container Image"
+ description: "Image to be used for container"
+ - name: "Workload Configuration"
+ description: "Configure workload deployment"
+ - name: "Configuration"
+ description: "additional container configuration"
+ - name: "Networking"
+ description: "Configure / service for container"
+ - name: "Storage"
+ description: "Persist and share data that is separate from the lifecycle of the container"
+ - name: "Resources and Devices"
+ description: "Specify resources/devices to be allocated to workload"
+ - name: "Reverse Proxy Configuration"
+ description: "Reverse Proxy configuration"
+ - name: "Advanced"
+ description: "Advanced Configuration"
+ - name: "WARNING"
+ description: "WARNING"
+portals:
+ web_portal:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: portal
+ group: "Container Image"
+ label: "Configure Portal Button"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: enabled
+ label: "Enable"
+ description: "enable the portal button"
+ schema:
+ hidden: true
+ editable: false
+ type: boolean
+ default: true
+
+ # Update Policy
+ - variable: strategyType
+ group: "Container Image"
+ label: "Update Strategy"
+ schema:
+ type: string
+ default: "Recreate"
+ enum:
+ - value: "RollingUpdate"
+ description: "Create new pods and then kill old ones"
+ - value: "Recreate"
+ description: "Kill existing pods before creating new ones"
+ # Configure Time Zone
+ - variable: timezone
+ group: "Container Image"
+ label: "Timezone"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+
+ # Configure Enviroment Variables
+ - variable: environmentVariables
+ label: "Image environment"
+ group: "Configuration"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: environmentVariable
+ label: "Environment Variable"
+ schema:
+ type: dict
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ # Enable Host Networking
+ - variable: hostNetwork
+ group: "Networking"
+ label: "Enable Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: services
+ group: "Networking"
+ label: "Configure Service"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "HTTPS"
+ hidden: false
+ enum:
+ - value: HTTP
+ description: "HTTP"
+ - value: "HTTPS"
+ description: "HTTPS"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8443
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8443
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36035
+ required: true
+ - variable: tcp
+ label: "Unifi Device Communications"
+ description: "This services is used for devices to communicate with the controller"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "TCP"
+ hidden: true
+ enum:
+ - value: TCP
+ description: "TCP"
+ - value: "UDP"
+ description: "UDP"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 8080
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36036
+ required: true
+ - variable: udp
+ label: "Stun Device Communications"
+ description: "This services is used for devices to communicate with the controller using STUN"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the service"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: "Service type"
+ description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
+ schema:
+ type: string
+ default: "ClusterIP"
+ enum:
+ - value: "NodePort"
+ description: "NodePort"
+ - value: "ClusterIP"
+ description: "ClusterIP"
+ - variable: port
+ label: "Port configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: protocol
+ label: "Port Type"
+ schema:
+ type: string
+ default: "UDP"
+ hidden: true
+ enum:
+ - value: TCP
+ description: "TCP"
+ - value: "UDP"
+ description: "UDP"
+ - variable: port
+ label: "container port"
+ schema:
+ type: int
+ default: 3478
+ editable: false
+ hidden: true
+ - variable: targetport
+ label: "Internal Service port"
+ description: "When connecting internally to this App, you'll need this port"
+ schema:
+ type: int
+ default: 3478
+ editable: false
+ hidden: true
+ - variable: nodePort
+ label: "(optional) host nodePort to expose to"
+ description: "only get used when nodePort is selected"
+ schema:
+ type: int
+ min: 9000
+ max: 65535
+ default: 36037
+ required: true
+ - variable: persistence
+ label: "Integrated Persistent Storage"
+ description: "Websocket Service"
+ group: "Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: config
+ label: "App Config Storage"
+ description: "Stores the Application Configuration."
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable the storage"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storageClass
+ label: "Type of Storage"
+ description: " Warning: Anything other than Internal will break rollback!"
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: "Internal"
+ - variable: mountPath
+ label: "mountPath"
+ description: "Path inside the container the storage is mounted"
+ schema:
+ type: string
+ default: "/unifi"
+ hidden: true
+ - variable: emptyDir
+ label: "Mount a ramdisk instead of actual storage"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ - variable: accessMode
+ label: "Access Mode (Advanced)"
+ description: "Allow or disallow multiple PVC's writhing to the same PVC"
+ schema:
+ type: string
+ default: "ReadWriteOnce"
+ enum:
+ - value: "ReadWriteOnce"
+ description: "ReadWriteOnce"
+ - value: "ReadOnlyMany"
+ description: "ReadOnlyMany"
+ - value: "ReadWriteMany"
+ description: "ReadWriteMany"
+ - variable: size
+ label: "Size quotum of storage"
+ schema:
+ type: string
+ default: "100Gi"
+
+
+ - variable: customStorage
+ label: "Custom app storage"
+ group: "Storage"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: volumeMount
+ label: "Custom Storage"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enabled"
+ schema:
+ type: boolean
+ default: true
+ required: true
+ hidden: true
+ editable: false
+ - variable: setPermissions
+ label: "Automatic Permissions"
+ description: "Automatically set permissions on install"
+ schema:
+ type: boolean
+ default: true
+ hidden: false
+ - variable: readOnly
+ label: "Mount as ReadOnly"
+ description: "prevent any write from being done to the mounted volume"
+ schema:
+ type: boolean
+ default: false
+ hidden: false
+ - variable: emptyDir
+ label: "emptyDir"
+ schema:
+ type: boolean
+ default: false
+ hidden: true
+ editable: false
+ - variable: mountPath
+ label: "Mount Path"
+ description: "Path to mount inside the pod"
+ schema:
+ type: path
+ required: true
+ default: ""
+ editable: true
+ - variable: hostPath
+ label: "Host Path"
+ schema:
+ type: hostpath
+ required: true
+ - variable: ingress
+ label: ""
+ group: "Reverse Proxy Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: main
+ label: "WebUI"
+ schema:
+ type: dict
+ attrs:
+ - variable: certType
+ label: "Select Reverse-Proxy Type"
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: "Disabled"
+ - value: ""
+ description: "No Encryption/TLS/Certificates"
+ - value: "selfsigned"
+ description: "Self-Signed Certificate"
+ - value: "ixcert"
+ description: "TrueNAS SCALE Certificate"
+ - variable: type
+ label: "Reverse Proxy Type"
+ schema:
+ type: string
+ default: "HTTP"
+ hidden: true
+ editable: false
+ required: true
+ - variable: serviceName
+ label: "Service name to proxy to"
+ schema:
+ hidden: true
+ editable: false
+ type: string
+ default: ""
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: "websecure"
+ required: true
+ enum:
+ - value: "websecure"
+ description: "Websecure: HTTPS/TLS port 443"
+ - variable: hosts
+ label: "Hosts"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: "Host"
+ schema:
+ type: dict
+ attrs:
+ - variable: host
+ label: "Domain Name"
+ required: true
+ schema:
+ type: string
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ required: true
+ hidden: true
+ default: "/"
+ - variable: certificate
+ label: "Select TrueNAS SCALE Certificate"
+ schema:
+ type: int
+ show_if: [["certType", "=", "ixcert"]]
+ $ref:
+ - "definitions/certificate"
+ - variable: authForwardURL
+ label: "Forward Authentication URL"
+ schema:
+ show_if: [["certType", "!=", "disabled"]]
+ type: string
+ default: ""
+ - variable: tcp
+ label: "TCP Ingress Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable TCP Ingress"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: type
+ label: "Select Ingress Type"
+ schema:
+ type: string
+ default: "TCP"
+ required: true
+ editable: false
+ hidden: true
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ type: string
+ default: "unificom"
+ required: true
+ enum:
+ - value: "unificom"
+ description: "Unifi Communications TCP: port 8080"
+ - variable: udp
+ label: "UDP Ingress Configuration"
+ schema:
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "Enable UDP Ingress"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: type
+ label: "Select Ingress Type"
+ schema:
+ type: string
+ default: "UDP"
+ required: true
+ editable: false
+ hidden: true
+ - variable: entrypoint
+ label: "Select Entrypoint"
+ schema:
+ type: string
+ default: "stun-udp"
+ required: true
+ enum:
+ - value: "stun-udp"
+ description: "STUN UDP: port 3478"
+ - variable: PUID
+ group: "Advanced"
+ label: "PUID"
+ description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+
+ - variable: PGID
+ group: "Advanced"
+ label: "PGID"
+ description: "Sets the PGID env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ group: "Advanced"
+ label: "UMASK"
+ description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
+ schema:
+ type: string
+ default: "002"
+ # Enable privileged
+ - variable: securityContext
+ group: "Advanced"
+ label: "Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: privileged
+ label: "Enable privileged mode for Common-Chart based charts"
+ schema:
+ type: boolean
+ default: false
+ # Set Pod Security Policy
+ - variable: podSecurityContext
+ group: "Advanced"
+ label: "Pod Security Context"
+ schema:
+ type: dict
+ attrs:
+ - variable: runAsNonRoot
+ label: "runAsNonRoot"
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsUser
+ label: "runAsUser"
+ description: "The UserID of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: "runAsGroup"
+ description: The groupID this App of the user running the application"
+ schema:
+ type: int
+ default: 0
+ - variable: supplementalGroups
+ label: "supplementalGroups"
+ description: "Additional groups this App needs access to"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: Group
+ label: "Group"
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroup
+ label: "fsGroup"
+ description: "The group that should own ALL storage."
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: "OnRootMismatch"
+ enum:
+ - value: "OnRootMismatch"
+ description: "OnRootMismatch"
+ - value: "Always"
+ description: "Always"
diff --git a/test/unifi/3.1.5/templates/common.yaml b/test/unifi/3.1.5/templates/common.yaml
new file mode 100644
index 00000000..a6613c2c
--- /dev/null
+++ b/test/unifi/3.1.5/templates/common.yaml
@@ -0,0 +1 @@
+{{ include "common.all" . }}
diff --git a/test/unifi/3.1.5/test_values.yaml b/test/unifi/3.1.5/test_values.yaml
new file mode 100644
index 00000000..b8989031
--- /dev/null
+++ b/test/unifi/3.1.5/test_values.yaml
@@ -0,0 +1,54 @@
+# Default values for Unifi.
+
+image:
+ repository: jacobalberty/unifi
+ tag: 6.1.71
+ pullPolicy: IfNotPresent
+
+strategy:
+ type: Recreate
+
+# Configure the Security Context for the Pod
+podSecurityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
+envTpl:
+# Permissions Settings
+ UNIFI_GID: "{{ .Values.PUID }}"
+ UNIFI_UID: "{{ .Values.PGID }}"
+
+services:
+ main:
+ port:
+ port: 8443
+ tcp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 8080
+ protocol: TCP
+ targetPort: 8080
+ udp:
+ enabled: true
+ type: ClusterIP
+ port:
+ port: 3478
+ protocol: UDP
+ targetPort: 3478
+
+env: {}
+ # TZ:
+ # PUID:
+ # PGID:
+
+persistence:
+ config:
+ enabled: true
+ mountPath: "/unifi"
+ emptyDir: true
+ accessMode: ReadWriteOnce
+ size: 1Gi
+ storageClass: ""
diff --git a/test/unifi/3.1.5/values.yaml b/test/unifi/3.1.5/values.yaml
new file mode 100644
index 00000000..e69de29b
diff --git a/test/unifi/item.yaml b/test/unifi/item.yaml
new file mode 100644
index 00000000..288785c1
--- /dev/null
+++ b/test/unifi/item.yaml
@@ -0,0 +1,3 @@
+categories:
+ - Networking
+icon_url: https://dl.ubnt.com/press/logo-UniFi.png